본문 바로가기

Programming/Android

안드로이드 메모리

반응형
안드로이드 폰을 쓰다보면 이상한 점을 발견할 수 있습니다.

설치 용량은 149KB 였던 어플이


실행 후에 메모리 사용량을 확인해 보니 16.02MB ......  무려 160배 가까운 차이를 보이고 있습니다..


도대체 뭐 때문에 이렇게 많은 메모리를 잡아 먹나 하는 의문이 들었습니다. 
친구는 Dalvik이 어플마다 실행되는 것 같다고 했지만 비효율적인거 같아서 아닐거라고 장담했지만...

'인사이드 안드로이드 5장 Zygote' 를 보니 정말로 어플이 실행될 때마다 독립적인 Dalvik이 존재한답니다.

어플 실행시 Dalvik 실행, 모듈 링크 등의 과정을 빠르게 하기 위하여 Zygote가 존재하는데 이것 또한 Java로 작성된 프로그램이라 Dalvik이 먼저 실행되어야 한다고 합니다. 

init->app_process->Dalvik->Zygote->Dalvik->Preloadded Classes->Preloadded Resources

여기까지가 Dalvik의 실행이고 

위의 Zyote를 fork()하여 Android Application 을 실행한다고 합니다.

어플이 실행되기 전에 Zygote를 위한 Dalvik이 하나 존재하고

Application을 실행하기 위한 Dalvik이 하나 더 실행되는 것 같습니다.

그리고 어플 갯수만큼 fork()되므로 여러개가 실행되는 것이 되겠지요.

Preloadded Classes, Preloadded Resources 는 공유된다고 했는데.... 

그럼 이 사용 메모리는 다 Dalvik의 사용 메모리일까요?


아직 해결이 안됐네요... ^^;
반응형