Lifetime analysis of dynamically allocated objects
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Virtual memory primitives for user programs
ASPLOS IV Proceedings of the fourth international conference on Architectural support for programming languages and operating systems
Using lifetime predictors to improve memory allocation performance
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Protection traps and alternatives for memory management of an object-oriented language
SOSP '93 Proceedings of the fourteenth ACM symposium on Operating systems principles
Garbage collection: algorithms for automatic dynamic memory management
Garbage collection: algorithms for automatic dynamic memory management
Segregating heap objects by reference behavior and lifetime
Proceedings of the eighth international conference on Architectural support for programming languages and operating systems
Comparison of Compacting Algorithms for Garbage Collection
ACM Transactions on Programming Languages and Systems (TOPLAS)
A parallel, real-time garbage collector
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Dynamic Storage Allocation: A Survey and Critical Review
IWMM '95 Proceedings of the International Workshop on Memory Management
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Mark-copy: fast copying GC with less space overhead
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Mostly concurrent compaction for mark-sweep GC
Proceedings of the 4th international symposium on Memory management
Garbage-first garbage collection
Proceedings of the 4th international symposium on Memory management
Automatic heap sizing: taking real memory into account
Proceedings of the 4th international symposium on Memory management
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
Garbage collection without paging
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Program-level adaptive memory management
Proceedings of the 5th 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
Isla Vista Heap Sizing: Using Feedback to Avoid Paging
Proceedings of the International Symposium on Code Generation and Optimization
CRAMM: virtual memory support for garbage-collected applications
OSDI '06 Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation - Volume 7
Parallel garbage collection for shared memory multiprocessors
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Microphase: an approach to proactively invoking garbage collection for improved performance
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
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
Parametric prediction of heap memory requirements
Proceedings of the 7th international symposium on Memory management
The single-referent collector: Optimizing compaction for the common case
ACM Transactions on Architecture and Code Optimization (TACO)
Waste not, want not: resource-based garbage collection in a shared environment
Proceedings of the international symposium on Memory management
Loaf: a framework and infrastructure for creating online adaptive solutions
Proceedings of the 1st International Workshop on Adaptive Self-Tuning Computing Systems for the Exaflop Era
Hi-index | 0.00 |
The growth in complexity of modern systems makes it increasingly difficult to extract high-performance. The software stacks for such systems typically consist of multiple layers and include managed runtime environments (MREs). In this paper, we investigate techniques to improve cooperation between these layers and the hardware to increase the efficacy of automatic memory management in MREs. General-purpose MREs commonly implement parallel and/or concurrent garbage collection and employ compaction to eliminate heap fragmentation. Moreover, most systems trigger collection based on the amount of heap a program uses. Our analysis shows that in many cases this strategy leads to ineffective collections that are unable to reclaim sufficient space to justify the incurred cost. To avoid such collections, we exploit the observation that dead objects tend to cluster together and form large, never-referenced, regions in the address space that correlate well with virtual pages that have not recently been referenced by the application. We leverage this correlation to design a new, simple and light-weight, yield predictor that estimates the amount of reclaimable space in the heap using hardware page reference bits. Our predictor allows MREs to avoid low-yield collections and thereby improve resource management. We integrate this predictor into three state-of-the-art parallel compactors, implemented in the HotSpot JVM, that represent distinct canonical heap layouts. Our empirical evaluation, based on standard Java benchmarks and open-source applications, indicates that inexpensive and accurate yield prediction can improve performance significantly.