adb shell dumpsys meminfo
```sh
Total RAM: 3,597,148K (status normal)
Free RAM: 1,071,266K ( 637,714K cached pss + 336,024K cached kernel + 97,528K free)
ION: 237,236K ( 183,672K mapped + -18,480K unmapped + 72,044K pools)
GPU: 0K
Used RAM: 3,462,226K (3,094,698K used pss + 367,528K kernel)
Lost RAM: 194,720K
ZRAM: 319,316K physical used for 1,759,976K in swap (4,194,300K total swap)
Tuning: 192 (large 512), oom 322,560K, restore limit 107,520K (high-end-gfx)
```
* Total RAM: 시스템 예약 메모리를 제외한 가용 메모리 크기.
* Free RAM + Used RAM이 Total RAM을 초과하는 이유:
- 캐시된 메모리는 종종 양쪽에 일부 포함될 수 있다.
- 가상 메모리와 스왑공간이 포함된다.
- ZRAM(압축된 메모리 사용으로 효율적 메모리 관리 지원)과 같은 보조 메모리 포함
* ION: 메모리 관리를 위한 시스템이 사용중인 메모리량.
* Tunning
- OOM 제한: 시스템이 OOM, 즉 메모리 부족 상태로 간주되는 임계값. 사용 가능한 메모리량이 이 값 이하로 떨어질 경우, Android 시스템은 메모리 부족 상태로 간주하고 OOM Killer를 활성화하여 메모리를 확보하기 위해 일부 프로세스를 종료시킬 수 있다.
- Restore Limit(High-End-Gfx): 이는 시스템이 메모리 부족 상태에서 벗어나 정상 상태로 복원되기 위해 확보해야 하는 메모리 양을 나타낸다. 여기서 "high-end-gfx"는 고성능 그래픽 처리에 필요한 메모리 관리를 위한 설정을 의미. 이 경우, 시스템은 최소 107,520K(약 105MB)의 메모리를 확보하기 위해 노력할 것 이다.
결론적으로, 이 설정은 사용 가능한 메모리량이 322,560K 이하로 떨어질 때 메모리 부족 상태를 감지하고, 이후 시스템이 정상적으로 기능을 수행하기 위해 최소 107,520K의 메모리를 확보하려고 시도한다는 것을 의미한다. 이는 시스템의 안정성을 유지하고 메모리 부족으로 인한 문제를 방지하기 위한 조치이다.
※ PSS(Proportional Set Size)란?
## PSS의 작동 방식:
1) 개별적으로 사용하는 메모리: 프로세스가 독점적으로 사용하는 메모리의 양. 이는 다른 어떤 프로세스와도 공유되지 않는 부분.
2) 공유 메모리의 비례 배분: 프로세스가 다른 프로세스와 공유하는 메모리의 경우, PSS는 이 공유된 메모리를 해당 메모리를 공유하는 모든 프로세스에 비례적으로 배분하여 계산한다. 예를 들어, 만약 두 개의 프로세스가 10MB의 메모리를 공유하고 있다면, PSS는 각 프로세스에 5MB씩을 할당한다.
## PSS의 중요성:
1) 정확한 메모리 사용량 파악: PSS는 프로세스가 실제로 사용하는 메모리 양을 보다 정확하게 반영한다. 단순히 개별 프로세스에 할당된 메모리 양만 고려하는 것보다, 공유된 메모리의 사용도 고려하기 때문에 실제 메모리 사용량을 더 잘 이해할 수 있다.
2) 시스템 자원 관리: 운영 체제는 PSS 값을 사용하여 시스템의 전체 메모리 사용량을 관리하고, 메모리 부족 상황에서 어떤 프로세스를 종료할지 결정하는 데 도움을 받을 수 있다.
※ RSS (Resident Set Size)란?
RSS는 프로세스에 의해 현재 사용 중인 물리적 메모리(RAM)의 양을 나타내는 지표이다. 이는 프로세스가 실제로 메모리에 올려놓고 사용하고 있는 메모리의 총량을 의미한다.
## RSS의 특징:
1) 독점적 및 공유 메모리 포함: RSS는 프로세스가 독점적으로 사용하는 메모리 뿐만 아니라, 다른 프로세스와 공유하는 메모리 전체를 포함한다.
2) 즉각적 메모리 사용: RSS는 현재 메모리에 로드되어 사용 중인 데이터의 양을 반영한다. 스왑된(디스크로 옮겨진) 메모리는 포함되지 않는다.
## PSS와 RSS 비교:
* 공유 메모리 처리 방식의 차이: PSS와 RSS의 주요 차이점은 공유 메모리를 처리하는 방식에 있다. PSS는 공유 메모리를 그 메모리를 공유하는 프로세스들 사이에 비례적으로 분할하여 계산하는 반면, RSS는 공유 메모리 전체를 각 프로세스의 메모리 사용량에 포함한다.
* 메모리 사용량의 과대평가 가능성: RSS는 공유 메모리를 각 프로세스에 전부 할당하므로, 메모리 사용량을 과대평가할 가능성이 있다. 예를 들어, 여러 프로세스가 동일한 라이브러리를 공유하는 경우, RSS는 이 라이브러리를 각 프로세스의 메모리 사용량에 전체적으로 추가한다.
* 시스템 자원 관리에서의 중요성: PSS는 전체 시스템의 메모리 사용량을 더 정확하게 평가하는 데 유용한 반면, RSS는 특정 프로세스가 실제로 메모
https://source.android.com/docs/core/perf/lmkd#psi-monitors-versus-vmpressure-signals
https://developer.android.com/topic/performance/memory-management?hl=ko
'Develop > Android' 카테고리의 다른 글
Targeting S+ (version 31 and above) requires that an explicit value for android:exported be defined when intent filters are present (0) | 2022.04.09 |
---|---|
[gradle] googlePlayServicesVersion 설정 방법 (0) | 2021.11.27 |
안드로이드 앱 꺼짐 현상 앱크래시😥 (0) | 2021.10.18 |
[android] MediaPlayer?? ExoPlayer?? (0) | 2021.10.05 |
[android] 실행중인 앱을 강제 종료시키고 싶을 때 (0) | 2021.09.29 |
댓글