2012 Volume 29 Issue 3 Pages 3_143-3_156
Lock operations and memory barrier instructions consume a lot of CPU cycles. Thus, many concurrent GC (garbage collection) implementations employ the incremental update GC, which can easily be implemented without locks or memory barriers. However, typical implementations of the incremental update GC stop the mutators while marking objects that should have been marked at the end of the mark phase, and thus are not suitable for realtime applications. In this paper, we propose a concurrent GC based on the snapshot GC, which does not need this operation of stopping the mutators. Our GC reduces the number of locks and memory barriers in the way that each mutator stores pointers that have been overwritten and passes those pointers to the collector en masse. We implemented this GC in Dalvik VM and evaluated it.