|
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. |