Incremental incrementally compacting garbage collection
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
Garbage collection: algorithms for automatic dynamic memory management
Garbage collection: algorithms for automatic dynamic memory management
A compacting incremental collector and its performance in a production quality compiler
Proceedings of the 1st international symposium on Memory management
A time- and space-efficient garbage compaction algorithm
Communications of the ACM
An algorithm for parallel incremental compaction
Proceedings of the 3rd international symposium on Memory management
A real-time garbage collector with low overhead and consistent utilization
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Space- and Time-Efficient Implementation of the Java Object Model
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Parallel garbage collection for shared memory multiprocessors
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Mostly concurrent compaction for mark-sweep GC
Proceedings of the 4th international symposium on Memory management
The Compressor: concurrent, incremental, and parallel compaction
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Data layouts for object-oriented programs
Proceedings of the 2007 ACM SIGMETRICS international conference on Measurement and modeling of computer systems
Stopless: a real-time garbage collector for multiprocessors
Proceedings of the 6th international symposium on Memory management
The mapping collector: virtual memory support for generational, parallel, and concurrent compaction
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Limits of parallel marking garbage collection
Proceedings of the 7th international symposium on Memory management
Online Phase-Adaptive Data Layout Selection
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
A Fully Parallel LISP2 Compactor with Preservation of the Sliding Properties
Languages and Compilers for Parallel Computing
Space-and-time efficient garbage collectors for parallel systems
Proceedings of the 6th ACM conference on Computing frontiers
The single-referent collector: Optimizing compaction for the common case
ACM Transactions on Architecture and Code Optimization (TACO)
Space overhead bounds for dynamic memory management with partial compaction
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Achieving middleware execution efficiency: hardware-assisted garbage collection operations
The Journal of Supercomputing
Parallel memory defragmentation on a GPU
Proceedings of the 2012 ACM SIGPLAN Workshop on Memory Systems Performance and Correctness
Memory management for many-core processors with software configurable locality policies
Proceedings of the 2012 international symposium on Memory Management
Space overhead bounds for dynamic memory management with partial compaction
ACM Transactions on Programming Languages and Systems (TOPLAS)
Adaptive scanning reduces sweep time for the Lisp2 mark-compact garbage collector
Proceedings of the 2013 international symposium on memory management
Limitations of partial compaction: towards practical bounds
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
We propose a heap compaction algorithm appropriate for modern computing environments. Our algorithm is targeted at SMP platforms. It demonstrates high scalability when running in parallel but is also extremely efficient when running single-threaded on a uniprocessor. Instead of using the standard forwarding pointer mechanism for updating pointers to moved objects, the algorithm saves information for a pack of objects. It then does a small computation to process this information and determine each object's new location. In addition, using a smart parallel moving strategy, the algorithm achieves (almost) perfect compaction in the lower addresses of the heap, whereas previous algorithms achieved parallelism by compacting within several predetermined segments. Next, we investigate a method that trades compaction quality for a further reduction in time and space overhead. Finally, we propose a modern version of the two-finger compaction algorithm. This algorithm fails, thus, re-validating traditional wisdom asserting that retaining the order of live objects significantly improves the quality of the compaction. The parallel compaction algorithm was implemented on the IBM production Java Virtual Machine. We provide measurements demonstrating high efficiency and scalability. Subsequently, this algorithm has been incorporated into the IBM production JVM.