메모리
할당 차트와 히스토리와 함께 실시간 메모리 분류(Free/Inactive/Active/Wired)를 보여줍니다.
개요
메모리 도구는 기기의 RAM이 어떻게 할당되어 있는지, 얼마나 빨리 회수할 수 있는지, 그리고 시간이 지남에 따라 분류가 어떻게 변하는지를 보여줍니다.
다음과 같은 실용적인 질문에 답하도록 설계되었습니다:
- "이 기기가 현재 메모리 압박 상태인가요?"
- "메모리가 시스템(유선), 앱(활성), 또는 캐시(비활성)에 의해 점유되고 있나요?"
- "내 메모리 사용량이 안정적인가요, 아니면 급증하고 있나요?"
Lirum에서 사용 가능한 메모리는 iOS가 보통 빠르게 회수할 수 있는 메모리 양입니다: Free + Inactive.
목차
탭
- 개요
- 세부 정보
- 히스토리
개요 탭
개요 탭은 사용 가능한 메모리에 중점을 둡니다:
- 사용 가능한 비율을 보여주는 원형 게이지.
- 사용 가능한 양과 총 RAM.
- 간결한 분류 표: Free, Inactive, Active, Wired.
기기가 현재 건강한 상태인지 빠르게 확인하고 싶을 때 이 뷰를 사용하세요. 네 줄 분류가 총합과 맞지 않으면 압축 및 "기타"를 참조하세요.
세부 정보 탭
세부 정보 탭은 더 자세한 분류를 제공합니다:
- 메모리 할당 차트 (Active/Wired/Inactive/Free).
- 크기와 백분율이 포함된 상세 메모리 정보 표.
- Free + Inactive를 합친 사용 가능 행.
어떤 종류의 메모리가 사용 중인지(그리고 회수 가능성이 있는지)를 이해하기에 가장 좋은 곳입니다. Free/Inactive/Active/Wired 백분율이 100%가 되지 않는 경우, 일부 메모리가 압축되었거나 "기타"로 분류되어 있기 때문입니다.
히스토리 탭
히스토리 탭은 단일 스냅샷 대신 추세를 이해하는 데 도움을 줍니다:
- 메모리 할당 히스토리: Free/Inactive/Active/Wired의 누적 타임라인.
- 메모리 사용량 히스토리: 시간에 따른 전체 사용량의 단순화된 뷰.
히스토리는 다음과 같은 경우에 사용하세요:
- 메모리 누수나 과도한 작업 부하가 의심될 때(사용량이 꾸준히 증가).
- 메모리 압박과 스터터/앱 재시작을 연관 짓고 싶을 때(사용량 급증 후 감소).
- Wired 메모리가 증가하고 높게 유지되는지 확인하고 싶을 때(주로 시스템/드라이버 압박).
메모리 상태
Lirum은 iOS가 보고하는 동일한 상위 범주를 사용합니다. iOS 메모리에 대해 가장 유용한 "정신적 모델" 범주는 다음과 같습니다:
| 범주 | 일반적인 의미 | iOS가 빠르게 회수할 수 있나요? |
|---|---|---|
| Free | 사용하지 않는 RAM, 즉시 할당 가능 | 예 (이미 비어 있음) |
| Inactive | 주로 최근에 사용하지 않은 캐시 및 페이지 | 종종 가능 |
| Active | 현재 사용 중인 작업 집합 | 직접적으로는 아님 |
| Wired | 고정되어 페이지 아웃 불가한 시스템 메모리 | 아니요 |
| Compressed | 메모리 압축기에 저장된 페이지 | 직접적으로는 아님 |
| Other | 나머지 범주 (OS/기기에 따라 다름) | 상황에 따라 다름 |
사용 가능 (Free + Inactive)
사용 가능은 실용적인 "얼마나 여유가 있나요?" 지표입니다.
- Free: 이미 사용하지 않는 페이지.
- Inactive: 주로 캐시 페이지로, 다른 메모리가 필요할 때 해제하거나 재활용할 수 있습니다.
이 때문에 Lirum은 개요 게이지와 세부 정보 표에서 사용 가능 = Free + Inactive를 표시합니다.
참고: 사용 가능은 시스템이 즉시 비용 없이 그만큼의 메모리를 제공한다는 보장이 아닙니다. 비활성 페이지를 회수하는 데는 캐시 삭제, 더티 페이지 기록, 캐시 데이터 재구성 등의 작업이 필요할 수 있습니다.
실제로 의미하는 바:
- 사용 가능이 높고 안정적이면, Free가 낮아도 기기는 일반적으로 여유가 있습니다.
- 사용 가능이 지속적으로 낮고 정상 작업 중에도 낮게 유지되면, iOS는 회수할 캐시가 적어져 더 강한 압박 조치(압축, 앱 종료)를 시작할 수 있습니다.
- 앱 실행 시 짧은 하락은 정상입니다. 회복되지 않는 느린 지속적 감소는 일반적인 "압박" 패턴입니다.
Wired
Wired 메모리는 고정되어(페이지 아웃 불가) 압축하거나 즉시 회수할 수 없는 RAM입니다.
Wired는 "항상 상주해야 하는" 메모리로 생각하세요. 보통 커널과 저수준 시스템 서비스가 소유하며, 정확성이나 실시간 동작에 필요합니다.
일반적인 예:
- 커널 메모리 및 핵심 OS 서비스
- 하드웨어 드라이버 및 DMA 버퍼
- 그래픽/디스플레이 표면 및 일부 GPU 관련 할당
- 실시간 또는 정확성 이유로 상주해야 하는 메모리
중요한 이유:
- Wired 메모리는 가장 융통성 없는 범주입니다. 크기가 커지면 iOS가 RAM을 해제할 수 있는 옵션이 줄어들어 메모리 압박이 빨리 발생합니다.
- Free 메모리가 낮아도 괜찮을 수 있지만, Wired가 지속적으로 높으면 iOS가 대응하기 어렵습니다.
일반적인 패턴:
- 카메라 사용, AR, 게임, 비디오 파이프라인, 무거운 I/O, 외부 액세서리 사용 시 Wired가 증가할 수 있습니다.
- Wired는 "끈적한" 경향이 있습니다. 일부 Wired 할당은 빠르게 줄지 않고, 일부는 재부팅 후에만 초기화됩니다.
- Wired가 꾸준히 증가하고 감소하지 않으면, 지속적인 시스템 수준 압박(또는 시스템 서비스/드라이버 누수)을 나타낼 수 있습니다.
Active
Active 메모리는 앱과 시스템이 현재 사용 중인(자주 참조하는) RAM입니다.
Active는 단순히 "앱 메모리"가 아닙니다. OS가 현재 뜨겁다고 판단하는 모든 페이지를 포함하며, 파일 기반 페이지(예: 코드 및 프레임워크)와 익명 페이지(예: 힙과 스택)도 포함합니다.
일반적인 예:
- 앱 힙과 작업 집합
- 사용 중인 파일 캐시 및 디코딩된 미디어
- 시스템/앱이 적극적으로 접근하는 데이터 구조
중요한 이유:
- Active 메모리는 낭비된 메모리가 아니라 작업 메모리입니다. 보통 사용 중인 작업량을 반영합니다.
- iOS는 Active 페이지를 단순히 "해제"할 수 없습니다. 압박 시 iOS는 보통 캐시부터 회수하려 하며, 부족하면 메모리를 압축하고 결국 앱을 종료할 수 있습니다.
일반적인 패턴:
- 앱을 열고 작업할 때 Active가 증가하며, 앱 종료나 시간이 지나면서 페이지가 비활성화되면 감소할 수 있습니다.
- 작업 부하가 변하지 않거나 기기가 유휴 상태인데도 Active가 계속 증가하면, 메모리 누수나 앱 내 캐시 과다 사용의 신호일 수 있습니다.
Inactive
Inactive 메모리는 최근에 사용되었으나 현재는 주로 캐시로 유지되는 RAM입니다.
Inactive는 iOS가 "빠르게 회수"할 수 있는 여유 공간의 대부분을 차지합니다. 비활성 메모리의 큰 부분은 깨끗한 파일 캐시로, 필요 시 삭제하고 나중에 다시 구축할 수 있습니다.
일반적인 예:
- 캐시된 파일 페이지
- 재활용 가능한 최근 사용 앱 메모리
- 적극적으로 참조되지 않지만 다시 유용해질 수 있어 유지되는 데이터
중요한 이유:
- Inactive는 새 할당에 RAM이 필요할 때 iOS가 가장 먼저 회수하는 영역입니다.
- 높은 Inactive는 보통 정상이며, iOS가 RAM을 효율적으로 캐시로 사용하고 있음을 의미합니다.
일반적인 패턴:
- 앱 실행, 파일 읽기, 미디어 스크롤, 웹 콘텐츠 로딩 후 Inactive가 증가합니다(이 페이지들이 캐시가 됨).
- 메모리 압박 시 iOS가 캐시 페이지를 재활용하면서 Inactive가 감소해야 합니다.
- Inactive가 이미 낮고 사용 가능도 낮으면, iOS가 쉽게 회수할 메모리가 적어져 압박이 빨리 발생할 수 있습니다.
Free
Free 메모리는 현재 할당되지 않은 RAM으로 즉시 사용할 수 있습니다.
iOS에서는 Free가 설계상 낮은 경우가 많습니다. OS는 다음 앱 실행, 스크롤, 파일 읽기를 빠르게 하기 위해 RAM을 캐시로 활용하려고 합니다.
중요한 이유:
- iOS는 건강한 기기에서도 Free가 작게 유지되는 경향이 있습니다. RAM을 사용하지 않고 비워두기보다는 캐시(Inactive)로 활용하는 것을 선호합니다.
- Free가 낮아도 Inactive가 건강하고 기기가 압박 상태가 아니면 문제되지 않습니다.
압축 및 "기타" (숫자가 맞지 않는 이유)
앱에서는 iOS가 압축 메모리와 네 가지 주요 페이지 목록에 깔끔하게 맞지 않는 기타 시스템 할당도 보고합니다.
압축 메모리는 iOS가 페이지를 압축 형태로 저장하여 메모리를 절약한 RAM입니다. 이는 iOS의 주요 압박 완화 메커니즘 중 하나입니다:
- 압축은 RAM을 절약하지만, 여전히 RAM과 CPU(압축 및 해제에)를 사용합니다.
- 압축된 메모리 사용량이 증가하면 시스템이 앱 종료를 피하기 위해 더 열심히 작업하고 있다는 신호일 수 있습니다.
- 압축된 페이지에 다시 접근하면 iOS가 이를 해제해야 하므로 지연과 CPU 사용량 증가가 발생할 수 있습니다.
기타는 네 가지 주요 범주에 포함되지 않는 모든 나머지 항목을 위한 범주입니다. OS 버전과 기기에 따라 다르게 보고되는 다양한 시스템 할당 및 VM 회계 범주가 포함될 수 있습니다.
Lirum에서는:
- 개요 분류와 세부 차트는 가장 일반적으로 해석되는 네 가지 상태: Free, Inactive, Active, Wired에 집중합니다.
- 표시되는 총합 메모리는 기기의 물리적 RAM입니다.
따라서 네 줄 분류가 모든 기기와 OS 버전에서 총합과 정확히 일치하지 않을 수 있습니다. "누락된" 양은 보통 압축 메모리와 기타 시스템 할당(기타) 때문입니다.
iOS가 압박 상태에서 하는 일
RAM이 부족해지면 iOS는 보통 단계별로 압박을 가합니다:
- 먼저 캐시 회수: Free 페이지를 재활용하고, Inactive 캐시를 회수(깨끗한 파일 캐시 삭제, 일부 캐시 정리).
- 메모리 압축: 덜 최근에 사용된 페이지를 압축 형태로 저장해 앱 종료를 지연.
- 앱 종료: 압박이 계속되면 백그라운드 앱(나중에는 포그라운드 앱도) 종료로 메모리 확보. 이로 인해 앱 전환 시 재시작 현상이 나타날 수 있습니다.
메모리 도구는 히스토리 탭을 사용해 이러한 단계를 시간 경과에 따라 관찰할 때 가장 유용합니다.
숫자 해석 방법
- **사용 가능 (Free + Inactive)**는 가장 빠른 "여유 공간" 지표입니다.
- Wired는 가장 다루기 어려운 범주입니다. Wired가 증가하면 시스템이 조절할 수 있는 여지가 줄어듭니다.
- Inactive가 큰 것은 보통 정상이며 좋습니다(캐시). 시스템이 메모리가 필요할 때 감소해야 합니다.
- Active + Wired가 증가하고 사용 가능 메모리가 줄어들면 앱 재시작, 스터터, 시스템 압박이 발생할 수 있습니다.
- 추세를 파악하려면 히스토리 탭을 사용하세요. iOS는 RAM을 적극적으로 캐시로 사용하기 때문에 단일 스냅샷은 오해하기 쉽습니다.
- 반복 작업 중 사용 가능 메모리가 꾸준히 감소하면 단일 숫자보다 더 강한 문제 신호입니다.
주의 사항 및 제한 사항
- iOS는 메모리를 자동으로 관리하므로, 낮은 Free 메모리가 항상 문제는 아닙니다.
- 값과 범주는 기기와 OS에 따라 다르며, 도구가 열려 있는 동안 계속 업데이트됩니다.
- 메모리 도구는 시스템 전체 메모리 상태를 보여주며(앱별 할당 아님), 일부 iPad 모델과 OS 버전에서는 스토리지를 스왑으로 사용할 수 있습니다. 메모리 도구는 물리적 RAM에 집중하며 스왑 사 용량 시각화는 하지 않습니다.