Cycler: Improve Heap Management for Allocation-Intensive Applications with On-the-Fly Object Reuse

Lijuan Xiao and Xiao-Feng Li


On-the-fly object reuse, Tracing garbage collection, Selective reference counting, Major type


Garbage collection (GC) is an indispensable technology in managed runtime systems (e.g. Java VM). The folk belief is that it is hard for any other GC algorithm to beat the performance of current sophisticated copying generational GC on short-lived objects. In this paper we describe Cycler that can improve the performance and scalability of allocation-intensive applications over copying generational GC. We observe that the state-of-the-art tracing GCs reclaim the space of dead objects all-at-once in batch mode, so the dead objects between two GC cycles are not collected. If there are a large number of objects dying in the duration, the non-recycled space causes high cache miss rate and puts memory bus under heavy pressure. The circumstance gets worse on multi-core platforms due to the competition over memory and bus subsystems. We propose a new GC design Cycler that enhances tracing GC with on-the-fly object reuse. Cycler can effectively reduce GC pause time and improve memory access performance for allocation-intensive applications. The novelty of Cycler is that it can be seamlessly integrated with existing tracing GCs without sacrificing the latter’s advantages

Important Links:

Go Back