. Dynamic memory allocation has been a fundamental part of most computer systems since roughly 1960, and memory allocation is widely considered to be either a solved problem or an insoluble one. In this survey, we describe a variety of memory allocator designs and point out issues relevant to their design and evaluation. We then chronologically survey most of the literature on allocators between 1961 and 1995. (Scores of papers are discussed, in varying detail, and over 150 references are given.) We argue that allocator designs have been unduly restricted by an emphasis on mechanism, rather than policy, while the latter is more important; higher-level strategic issues are still more important, but have not been given much attention. Most theoretical analyses and empirical allocator evaluations to date have relied on very strong assumptions of randomness and independence, but real program behavior exhibits important regularities that must be exploited if allocator...
|
684
|
The Design and Implementation of a Log-Structured File System
– Rosenblum, Ousterhout
- 1991
|
|
390
|
Uniprocessor garbage collection techniques
– WILSON
- 1992
|
|
301
|
Shade: A fast instruction-set simulator for execution profiling
– Cmelik, Keppel
- 1994
|
|
254
|
Naming and necessity
– Kripke
|
|
249
|
The Art of Computer Programming. Volume 1/Fundamental Algorithms
– Knuth
- 1973
|
|
243
|
Garbage collection in an uncooperative environment
– Boehm, Weiser
- 1988
|
|
238
|
Optimally Profiling and Tracing Programs
– Ball, Larus
- 1994
|
|
224
|
Evaluating Associativity in CPU Caches
– Hill, Smith
- 1989
|
|
217
|
A real-time garbage collector based on the lifetimes of objects
– Lieberman, Hewitt
- 1983
|
|
182
|
Notes on Structured Programming
– Dijkstra
- 1972
|
|
172
|
The Origin of Species
– Darwin
- 1958
|
|
128
|
Garbage collection in large lisp systems
– Moon
- 1984
|
|
126
|
The Design and Evaluation of a High Performance Smalltalk System. ACM Distinguished Dissertations
– Ungar
- 1987
|
|
120
|
Mostly parallel garbage collection
– BOEHM, DEMERS, et al.
- 1991
|
|
96
|
Virtual Memory
– Denning
- 1970
|
|
95
|
Texas: An efficient, portable, persistent store
– Singhal, Kakkad, et al.
- 1992
|
|
80
|
Garbage collection in an uncooperative environment. Software Practice and Experience
– Boehm, Weiser
- 1988
|
|
77
|
The measured cost of conservative garbage collection. Software Practice and Experience
– Zorn
- 1993
|
|
73
|
Darwin’s Dangerous Idea
– Dennett
- 1995
|
|
68
|
Using lifetime predictors to improve memory allocation performance
– Barrett, Zorn
- 1993
|
|
64
|
Improving the cache locality of memory allocation
– Grunwald, Zorn, et al.
- 1993
|
|
64
|
A unifying look at data structures
– Vuillemin
- 1980
|
|
63
|
The data compression book
– Nelson
- 1992
|
|
62
|
Design of the opportunistic garbage collector
– Wilson, Moher
- 1989
|
|
61
|
The portable common runtime approach to interoperability
– Weiser, Demers, et al.
- 1989
|
|
59
|
A fast storage allocator
– Knowlton
- 1965
|
|
54
|
On the Fractal Dimension of Computer Programs and its Application to the Prediction of the Cache Miss Ratio
– Thiebaut
- 1989
|
|
52
|
The compression cache: Using on-line compression to extend physical memory
– Douglis
- 1993
|
|
50
|
Combining generational and conservative garbage collection: Framework and implementations
– Demers, Weiser, et al.
- 1990
|
|
49
|
Caching considerations for generational garbage collection
– Wilson, Lam, et al.
- 1992
|
|
48
|
Tenuring policies for generationbased storage reclamation
– Ungar, Jackson
- 1988
|
|
47
|
Data Structure Techniques
– Standish
- 1980
|
|
45
|
Mache: No-loss trace compaction
– Samples
- 1988
|
|
45
|
A System for Adaptive Disk Rearrangement
– Vongsathorn, Carson
- 1990
|
|
44
|
Fast allocation and deallocation of memory based on object lifetimes. 74 Practice and Experience
– Hanson
- 1990
|
|
41
|
Using key object opportunism to collect old objects
– Hayes
- 1991
|
|
40
|
Empirical Analysis of a Lisp System
– Shaw
- 1988
|
|
40
|
Effective static-graph reorganization to improve locality in garbage-collected systems
– Wilson, Lam, et al.
- 1991
|
|
40
|
Adaptive Block Rearrangement
– Akyürek, Salem
- 1995
|
|
36
|
Cache performance of garbage-collected programs
– Reinhold
|
|
34
|
Dynamic base register caching: A technique for reducing address bus width
– Farrens, Park
- 1991
|
|
32
|
CustoMalloc: Efficient Synthesized Memory Allocators
– Grunwald, Zorn
- 1993
|
|
32
|
The Structure of Scientific Revolutions, second edition
– Kuhn
- 1970
|
|
32
|
Design of an Optimizing Compiler
– Wulf, Johnsson, et al.
- 1975
|
|
31
|
Buddy systems
– Peterson, Norman
- 1977
|
|
30
|
Sleator and Robert Endre Tarjan. Self-adjusting binary search trees
– Dominic
- 1985
|
|
28
|
Infant mortality’ and generational garbage collection
– Baker
- 1993
|
|
28
|
Natural kinds
– Quine
|
|
27
|
Memory subsystem performance of programs with intensive heap allocation. Submitted for publication
– Diwan, Tarditi, et al.
- 1993
|
|
27
|
Empirical measurements of six allocation-intensive C programs
– Zorn, Grunwald
- 1992
|