An on-the-fly reference counting garbage collector for Java

Yossi Levanoni, Erez Petrank

Research output: Contribution to journalArticlepeer-review

Abstract

Reference counting is not naturally suitable for running on multiprocessors. The update of pointers and reference counts requires atomic and synchronized operations. We present a novel reference counting algorithm suitable for a multiprocessor that does not require any synchronized operation in its write barrier (not even a compare-and-swap type of synchronization). The algorithm is efficient and may compete with any tracing algorithm. We have implemented our algorithm on SUN's Java Virtual Machine 1.2.2 and ran it on a 4-way IBM Netfinity 8500R server with 550MHz Intel Pentium III Xeon and 2GB of physical memory. It turns out that our algorithm has an extremely low latency and throughput that is comparable to the mark and sweep algorithm used in the original JVM.

Original languageEnglish
Pages (from-to)367-380
Number of pages14
JournalACM SIGPLAN Notices
Volume36
Issue number11
DOIs
StatePublished - 1 Nov 2011

Keywords

  • Garbage collection
  • Memory management
  • Reference counting
  • Runtime systems

All Science Journal Classification (ASJC) codes

  • General Computer Science

Fingerprint

Dive into the research topics of 'An on-the-fly reference counting garbage collector for Java'. Together they form a unique fingerprint.

Cite this