Simple generational garbage collection and fast allocation
Software—Practice & Experience
An advisor for flexible working sets
SIGMETRICS '90 Proceedings of the 1990 ACM SIGMETRICS conference on Measurement and modeling of computer systems
Implementing stack simulation for highly-associative memories
SIGMETRICS '91 Proceedings of the 1991 ACM SIGMETRICS conference on Measurement and modeling of computer systems
The treadmill: real-time garbage collection without motion sickness
ACM SIGPLAN Notices
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Efficient simulation of caches under optimal replacement with applications to miss characterization
SIGMETRICS '93 Proceedings of the 1993 ACM SIGMETRICS conference on Measurement and modeling of computer systems
Informed prefetching and caching
SOSP '95 Proceedings of the fifteenth ACM symposium on Operating systems principles
Controlling garbage collection and heap growth to reduce the execution time of Java applications
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Adaptive caching for demand prepaging
Proceedings of the 3rd international symposium on Memory management
Calculating stack distances efficiently
Proceedings of the 2002 workshop on Memory system performance
Predicting whole-program locality through reuse distance analysis
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
WSCLOCK—a simple and effective algorithm for virtual memory management
SOSP '81 Proceedings of the eighth ACM symposium on Operating systems principles
The working set model for program behavior
SOSP '67 Proceedings of the first ACM symposium on Operating System Principles
The EELRU adaptive replacement algorithm
Performance Evaluation
Oil and Water? High Performance Garbage Collection in Java with MMTk
Proceedings of the 26th International Conference on Software Engineering
IBM Systems Journal
Dynamic tracking of page miss ratio curve for memory management
ASPLOS XI Proceedings of the 11th international conference on Architectural support for programming languages and operating systems
Automatic heap sizing: taking real memory into account
Proceedings of the 4th international symposium on Memory management
Garbage collection without paging
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
The case for compressed caching in virtual memory systems
ATEC '99 Proceedings of the annual conference on USENIX Annual Technical Conference
Two-Level Replacement Decisions in Paging Stores
IEEE Transactions on Computers
IEEE Transactions on Software Engineering
Allocation-phase aware thread scheduling policies to improve garbage collection performance
Proceedings of the 6th international symposium on Memory management
Garbage collection: Java application servers' Achilles heel
Science of Computer Programming
XMem: type-safe, transparent, shared memory for cross-runtime communication and coordination
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Contention-aware scheduler: unlocking execution parallelism in multithreaded java programs
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
RapidMRC: approximating L2 miss rate curves on commodity systems for online optimizations
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
Dynamic memory balancing for virtual machines
Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Modeling, analysis and throughput optimization of a generational garbage collector
Proceedings of the 2009 international symposium on Memory management
Efficiently and precisely locating memory leaks and bloat
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Program locality analysis using reuse distance
ACM Transactions on Programming Languages and Systems (TOPLAS)
Dynamic memory balancing for virtual machines
ACM SIGOPS Operating Systems Review
A page fault equation for dynamic heap sizing
Proceedings of the first joint WOSP/SIPEW international conference on Performance engineering
Redline: first class support for interactivity in commodity operating systems
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Index-compact garbage collection
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Waste not, want not: resource-based garbage collection in a shared environment
Proceedings of the international symposium on Memory management
Low cost working set size tracking
USENIXATC'11 Proceedings of the 2011 USENIX conference on USENIX annual technical conference
Economic theory for memory management optimization
Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
A generalized theory of collaborative caching
Proceedings of the 2012 international symposium on Memory Management
Application level ballooning for efficient server consolidation
Proceedings of the 8th ACM European Conference on Computer Systems
Pacman: program-assisted cache management
Proceedings of the 2013 international symposium on memory management
An equation-based Heap Sizing Rule
Performance Evaluation
Ginseng: market-driven memory allocation
Proceedings of the 10th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Hi-index | 0.01 |
Existing virtual memory systems usually work well with applications written in C and C++, but they do not provide adequate support for garbage-collected applications. The performance of garbage-collected applications is sensitive to heap size. Larger heaps reduce the frequency of garbage collections, making them run several times faster. However, if the heap is too large to fit in the available RAM, garbage collection can trigger thrashing. Existing Java virtual machines attempt to adapt their application heap sizes to fit in RAM, but suffer performance degradations of up to 94% when subjected to bursts of memory pressure. We present CRAMM (Cooperative Robust Automatic Memory Management), a system that solves these problems. CRAMM consists of two parts: (1) a new virtual memory system that collects detailed reference information for (2) an analytical model tailored to the underlying garbage collection algorithm. The CRAMM virtual memory system tracks recent reference behavior with low overhead. The CRAMM heap sizing model uses this information to compute a heap size that maximizes throughput while minimizing paging. We present extensive empirical results demonstrating CRAMM's ability to maintain high performance in the face of changing application and system load.