Cold objects in the java virtual machine

Thumbnail Image



Journal Title

Journal ISSN

Volume Title


University of New Brunswick


Objects in the heap are alive when they are reachable from the root set, otherwise they are dead. Live objects that are not accessed for a specified time are called cold objects. If cold objects are moved to cold regions, then these regions need not to be included in garbage collection. Consequently, the pause time of garbage collection could be reduced and Java application throughput could be increased. In this thesis, the proportion of cold objects in real Java applications has been investigated. The results show that some Java applications have as much as 22% cold objects. If these cold objects need not to be marked and swept during garbage collection, significant pause time could be saved. It has been suggested that all active objects can be identified by periodically walking the stack. This method is called the Stack-based solution. The correctness and efficiency of the Stack-based solution has been evaluated and confirmed with an Access Barrier methodology. The experimental results show that the Stack-based solution is acceptable to identify cold objects. Furthermore, some improved approaches to minimize the overhead have been implemented for the Stack-based solution. The improved approaches have shown good results. Experimental results show that the Java application throughput has been increased and the pause time of the garbage collection has been reduced under the improved approaches.