Garbage collection offers numerous software engineering advantages, but interacts poorly with virtual memory managers. Existing garbage collectors require far more pages than the application’s working set and touch pages without regard to which ones are in memory, especially during full-heap garbage collection. The resulting paging can cause throughput to plummet and pause times to spike up to seconds or even minutes. We present a garbage collector that avoids paging. This bookmarking collector cooperates with the virtual memory manager to guide its eviction decisions. Using summary information (“bookmarks”) recorded from evicted pages, the collector can perform in-memory full-heap collections. In the absence of memory pressure, the bookmarking collector matches the throughput of the best collector we tested while running in smaller heaps. In the face of memory pressure, it improves throughput by up to a factor of five and reduces pause times by up to a factor of 45 over the next best collector. Compared to a collector that consistently provides high throughput (generational mark-sweep), the bookmarking collector reduces pause times by up to 218x and improves throughput by up to 41x. Bookmarking collection thus provides greater utilization of available physical memory than other collectors while matching or exceeding their throughput.
|
381
|
Uniprocessor Garbage Collection Techniques
– Wilson
- 1992
|
|
297
|
Garbage Collection: Algorithms for automatic dynamic memory management
– Jones, Lins
- 1996
|
|
280
|
Generation scavenging: A non-disruptive high performance storage reclamation algorithm
– Ungar
- 1984
|
|
226
|
The Jalepeño virtual machine
– Alpern, Attanasio, et al.
- 2000
|
|
216
|
A Real-Time Garbage Collector Based on the Lifetimes of Objects
– Lieberman, Hewitt
- 1983
|
|
193
|
A non-recursive list compacting algorithm
– Cheney
- 1970
|
|
162
|
Virtual Memory Primitives for User Programs
– Appel, Li
- 1991
|
|
161
|
Simple generational garbage collection and fast allocation
– Appel
- 1989
|
|
148
|
Dynamic storage allocation: A survey and critical review
– Wilson, Johnstone, et al.
- 1995
|
|
136
|
Real-time concurrent collection on stock multiprocessors
– Appel, Ellis, et al.
- 1988
|
|
129
|
A.: Garbage Collection in a Large Lisp System
– Moon
- 1984
|
|
80
|
Computer Systems with a Very Large Address Space and Garbage Collection
– Bishop
- 1977
|
|
77
|
Using generational garbage collection to implement cache-conscious data placement
– Chilimbi, Larus
- 1998
|
|
76
|
List processing in real-time on a serial computer
– Baker
- 1978
|
|
75
|
The measured cost of conservative garbage collection
– Zorn
- 1993
|
|
71
|
Implementing Jalapeño in Java
– Alpern, Attanasio, et al.
- 1999
|
|
65
|
A survey of distributed garbage collection techniques
– Plainfossé, Shapiro
- 1995
|
|
56
|
A parallel, real-time garbage collector
– Cheng, Belloch
- 2001
|
|
53
|
Oil and Water? High Performance Garbage Collection in Java with MMTk
– Blackburn, Cheng, et al.
- 2004
|
|
50
|
Hoard: A scalable memory allocator for multithreaded applications
– Berger, McKinley, et al.
- 2000
|
|
43
|
Myths and realities: The performance impact of garbage collection
– Blackburn, Cheng, et al.
- 2004
|
|
36
|
Improving locality of reference in a garbage-collecting memory management-system
– Courts
- 1988
|
|
36
|
A Lisp garbage collector for virtual memory computer systems
– Fenichel, Yochelson
- 1969
|
|
36
|
Age-based garbage collection
– Stefanović, McKinley, et al.
- 1999
|
|
36
|
E ective static-graph reorganization to improve locality in garbagecollected systems
– Wilson, Lam, et al.
- 1992
|
|
30
|
A high-performance garbage collector for Standard ML
– Reppy
- 1993
|
|
28
|
Improving the performance of SML garbage collection using application-specific virtual memory management
– Cooper, Nettles, et al.
- 1992
|
|
28
|
A memory allocator. http://gee.cs.oswego.edu/dl/html/malloc.html
– Lea
- 2006
|
|
27
|
Bosschere. How Java programs interact with virtual machines at the microarchitecture level
– Eeckhout, Georges, et al.
- 2003
|
|
26
|
Garbage collecting the Internet: a survey of distributed garbage collection
– Abdullahi, Ringwood
- 1998
|
|
24
|
The Garbage Collection Advantage: Improving Program Locality
– Huang, Blackburn, et al.
- 2004
|
|
21
|
Controlling fragmentation and space consumption in the Metronome, a real-time garbage collector for Java
– Bacon, Cheng, et al.
- 2003
|
|
21
|
Mark-copy: Fast copying gc with less space overhead
– SACHINDRAN, B
|
|
21
|
Automatic heap sizing: Taking real memory into account
– Yang, Hertz, et al.
- 2004
|
|
20
|
The AED free storage package
– Ross
- 1967
|
|
18
|
Prefetch Injection Based on Hardware Monitoring and Object
– Adl-Tabatabai, Hudson, et al.
- 2004
|
|
18
|
An advisor for flexible working sets
– Alonso, Appel
- 1990
|
|
15
|
Object type directed garbage collection to improve locality
– Lam, Wilson, et al.
- 1992
|
|
12
|
A real-time garbage collecor with low overhead and consistent utilization
– Bacon, Cheng, et al.
- 2003
|
|
11
|
MC 2 : High-performance garbage collection for memory-constrained environments
– Sachindran, Moss, et al.
- 2004
|
|
10
|
A memory-efficient real-time non-copying garbage collector
– Lim, Pardyak, et al.
- 1998
|
|
7
|
Structure of a LISP system using two-level storage
– G, MURPHY
- 1967
|
|
7
|
Automatic vs. explicit memory management: Settling the performance debate
– Hertz, Berger
- 2004
|
|
6
|
LBNL traceroute heap corruption vulnerability. http: //www.securityfocus.com/bid/1739
– Savola
|
|
4
|
Garbage collection for virtual memory computer systems
– Baecker
- 1972
|
|
4
|
Leveled garbage collection
– Tong, O’Donnell
- 2001
|
|
3
|
Documentation: NetWare 6 - Optimizing Garbage Collection. Available at http://www.novell.com/documentation/ index.html
– Novell
|
|
3
|
A note on the efficiency of a LISP computation in a paged machine
– Bobrow, Murphy
- 1968
|
|
3
|
Memory Validator - Garbage Collectors. Available at http://softwareverify.com/ memoryValidator/garbageCollectors.html
– Verification, Ltd
|
|
3
|
rmap VM patch for the Linux kernel. Available at http://www.surriel.com/patches
– Riel
|