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 language | English |
---|---|
Pages (from-to) | 367-380 |
Number of pages | 14 |
Journal | ACM SIGPLAN Notices |
Volume | 36 |
Issue number | 11 |
DOIs | |
State | Published - 1 Nov 2011 |
Keywords
- Garbage collection
- Memory management
- Reference counting
- Runtime systems
All Science Journal Classification (ASJC) codes
- General Computer Science