Dalvik - About Garbage Collection

요즘 뜨거운 호응을 받고 있는 안드로이드. 그 중심에는 Dalvik이라고 부르는 virtual machine이 존재한다.

(Iceland에 있는 작은 어촌 Dalvik - from www.ismennt.is)

이 VM은 Java의 그것과 마찬가지로 garbage collection을 지원하는 메모리 관리자를 제공하고 있는데 이에 대한 이해를 돋기 위한 몇 가지 자료를 찾아보았다. (물론 googling을 하면 다시 찾을 수 있는 자료이지만 수고를 덜기 위해 이 곳에 모아두기로 결정하였다.)
Dalvik VM에 allocation되는 객체를 tracking하기 위한 도구를 설명하고 있다. 이 블로그 글에 따르면 Dalvik VM은 generational GC을 지원하지 않는다고 한다. 어이쿠 이럴 수가... 이런 기본적인 성능 최적화 기능이 없다니 좀 이상하다... 최신 Dalvik도 마찬가지인가? 확인 필요!
위 블로그 기사의 원문은 일본어인데 안타깝게도 나의 일본어 실력이 위 글을 다 이해할 수 있는 수준이 안되어 일단 링크는 구글 번역기로 걸어두었다. 나중에 원문을 확인해 볼 수 있도록 해야겠다. 일단, 이 글을 쓱 보면 Dalvik의 GC는 mark & sweep을 사용하고 stop the world 방식을 이용하고 있는 것으로 보인다. 흠... 역시 JVM의 concurrent GC와 비교하면 수준이 좀 떨어지는 방식으로 보인다. 물론, mobile에 사용되는 VM이니 PC에 사용되는 JVM과의 비교는 좀 억울한 감이 있다.
다시 한번 내 블로그에 등장한 Dalvik VM internal에 대한 Google IO 세션. 이 세션의 15분 30초 정도를 보면 Dalvik의 GC에 대한 내용이 살짝 소개된다. 정말 살짝 소개되서 사실 별로 도움이 안되는 내용인데 이 내용의 핵심은 Dalvik VM의 mark bits은 각 process가 사용하는 heap별로 관리된다는 것이다.

이 정도가 현재까지 찾아본 Dalvik VM의 GC에 대한 자료들이다. 좀 더 찾아봐야할 것 같고 있는 자료를 최대한 이해해서 정리해볼 필요가 있다. 궁국적으로는 소스를 읽어봐야 가장 확실히 이해가 될 듯.

참고:

댓글

이 블로그의 인기 게시물

Wireless: HotSpot 2.0 이란?

Apple M1 Mac Mini에서 이더리움 (Ethereum) 채굴하기

Java: Java for Game? Java가 Game 개발에 어울릴까?