Java에서는 명시적으로 Heap을 할당하고 해제하는 과정이 없지만, 그렇다고 해서 Memory를 아무런 제한 없이 사용할 수 있는 것은 아니다. 특히 제한된 RAM에서 동작하는 Android app을 작성할 때는 이 부분을 신경 써야 한다. 할당된 Heap 이상으로 Memory 할당을 하게 되면, Garbage collection이 일어나는데, App이 잠시 멈추는 현상이 발생한다.
adb tool을 사용해서 다음과 같이, 전체 Package의 Memory 사용량을 확인할 수 있다.
adb shell dumpsys meminfo
Applications Memory Usage (kB): |
여기에 package name을 추가하면 해당 Package의 전반적인 Memory 사용량을 더 자세히 살펴 볼 수 있다.
adb shell dumpsys meminfo com.example.helloworld
Applications Memory Usage (kB): |
Priavte RAM은 오직 해당 Process 1개에만 할당된 RAM으로 해당 Process가 종료할 때만 회수가 된다.
PSS는 Proportional Set Size의 약자로 다른 Process와 공유하는 RAM을 고려한 크기를 말한다. 만약에 어떤 RAM page가 해당 Process에만 할당되어 있다면 그 Page 크기 그대로 PSS에 더해진다. 하지만 어떤 RAM page를 2개의 Process가 공유한다면 그 Page는 절반만 PSS에 더해진다. 따라서 각 Process의 PSS를 모두 더하면 실제 사용 중인 Physical RAM 크기가 되는 것이다.
'IT, 프로그램, SW개발 > 안드로이드, 자바' 카테고리의 다른 글
ANR 로그 분석 방법 - /data/anr/traces.txt (0) | 2018.10.15 |
---|---|
윈도우에서 Battery Historian 사용 (0) | 2018.10.12 |
[안드로이드] This Android SDK requires Android Developer Toolkit version 23.0.0 (0) | 2015.02.04 |
[안드로이드-Linux] crash 덤프 분석 (0) | 2015.01.13 |
안드로이드 app 실행시에 notification과 실행중 리스트에 보여주기 (0) | 2014.06.24 |