Abstract
In this paper, we propose a stack allocation technique of Android Java objects in order to reduce the number of garbage collection which is one of major reason on Android performance degradation when running applications. The proposed technique is to allocate Java objects into stack rather than heap memory. To do so, stacked objects could escape the garbage collection process. We experiment the proposed technique in the latest Android 2.3 version. For the simulation, we take advantage of the well known Java benchmark, Caffeinemark, and our own. The result shows the performance degradation of Dalvik Virtual Machine execution time caused by the stack allocation of Java objects is very slight and the proposed method considerably reduces the frequency of garbage collection. This will increase application performance and give better user interfaces to Android phone users.
본 논문에서는 안드로이드 2.3에서 어플리케이션 실행 시 가비지 컬렉션(garbage collection)으로 인하여 발생하는 성능 저하를 감소시키기 위한 자바(Java) 객체들의 스택 할당(stack allocation) 기법을 제안하였다. 제안한 스택 할당 기법에서는 자바 객체들을 가비지 컬렉션이 되는 힙(Heap) 영역 대신에 스택에 할당함으로써 실행 시 가비지 컬렉션 대상이 되지 않게 한다. 제안한 기법의 성능 검증을 위하여 실제 자바 벤치마크에서 널리 사용되고 있는 Caffeinemark 및 자체 벤치마크 어플리케이션을 통해 안드로이드 스마트 폰에서 비교 실험을 하였다. 그 결과 자바 객체들의 스택 할당에 따르는 동작상의 오버헤드로 인한 수행 속도의 저하는 미미함을 보이면서도 가비지 컬렉션 수행 빈도는 상당히 감소시켜 어플리케이션 동작 및 사용자 인터페이스 성능 향상을 가져왔다.