CoMarkSplit: A Concurrent Mark-Split Garbage Collector
Rapport, 2012

Garbage collectors are important components of many modern programming languages and runtime systems. Mark-split is a garbage collection algorithm that combines advantages of both mark-sweep and copying collection algorithms. With the switch to multi-core and many-core microprocessors, parallelism becomes a core issue in the design of any algorithm or software system. In this paper, we present a concurrent design of the mark-split garbage collector. Our concurrent design algorithmically introduces and makes use of an efficient concurrency control mechanism for handling the list of free intervals. This mechanism is based on a lock-free skip-list design and supports an extended set of operations that allows, atomically and in a lock-free manner, to search and remove and also to insert two intervals at the same time. We have implemented the concurrent mark-split garbage collector in OpenJDK HotSpot as a garbage collector for the tenured generation. We present experimental evaluation of our concurrent collector and compare it with the default concurrent marks-sweep garbage collector present in OpenJDK HotSpot, using the Dacapo benchmarks. The evaluation shows that our concurrent mark-split performs better than the concurrent mark-sweep garbage collector in some applications.

skip-list

lock-free

mark-sweep

garbage collector

mark-split

Java

Författare

Dang Nhan Nguyen

Chalmers, Data- och informationsteknik, Nätverk och system

Håkan Sundell

Philippas Tsigas

Chalmers, Data- och informationsteknik, Nätverk och system

Styrkeområden

Informations- och kommunikationsteknik

Ämneskategorier

Datavetenskap (datalogi)

Technical report - Department of Computer Science and Engineering, Chalmers University of Technology and Göteborg University: 1652-926X