Dynamic Storage Allocation: A Survey and Critical Review

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

[1]  C. M. Reeves A Lumped-State Model of Clustering in Dynamic Storage Allocation , 1984, Comput. J..

[2]  Peter J. Denning Virtual Memory , 1996, ACM Comput. Surv..

[3]  Alan P. Batson,et al.  Segment sizes and liftetimes in Algol 60 programs , 1977, CACM.

[4]  Bruce W. Leverett,et al.  An adaptive system for dynamic storage allocation , 1982, Softw. Pract. Exp..

[5]  Daniel S. Hirschberg,et al.  A class of dynamic memory allocation algorithms , 1973, CACM.

[6]  George O. Collins,et al.  Experience in automatic storage allocation , 1961, Commun. ACM.

[7]  Richard Jones,et al.  Garbage collection , 1996 .

[8]  Arvin Park,et al.  Dynamic base register caching: a technique for reducing address bus width , 1991, [1991] Proceedings. The 18th Annual International Symposium on Computer Architecture.

[9]  Jeffrey S. Fenton,et al.  Dynamic Storage Allocation of Arbitrary Sized Segments , 1974, IFIP Congress.

[10]  Arun Iyengar,et al.  Parallel dynamic storage allocation algorithms , 1993, Proceedings of 1993 5th IEEE Symposium on Parallel and Distributed Processing.

[11]  J. K. Iliffe,et al.  A Dynamic Storage Allocation Scheme , 1962, Comput. J..

[12]  Paul R. Wilson,et al.  Uniprocessor Garbage Collection Techniques , 1992, IWMM.

[13]  John E. Shore On the external storage fragmentation produced by first-fit and best-fit allocation strategies , 1975, CACM.

[14]  R WilsonPaul,et al.  Caching considerations for generational garbage collection , 1992 .

[15]  Rick Thomas,et al.  A simplified recombination scheme for the Fibonacci buddy system , 1975, CACM.

[16]  Jeffrey D. Ullman The role of theory today , 1995, CSUR.

[17]  Paul R. Wilson,et al.  Some issues and strategies in heap management and memory hierarchies , 1991, SIGP.

[18]  Barry Hayes,et al.  Using key object opportunism to collect old objects , 1991, OOPSLA '91.

[19]  Henry G. Baker,et al.  Infant mortality and generational garbage collection , 1993, SIGP.

[20]  Jean Vuillemin,et al.  A unifying look at data structures , 1980, CACM.

[21]  David Ungar,et al.  The design and evaluation of a high performance Smalltalk system , 1987 .

[22]  Giuseppe Attardi,et al.  A Customisable Memory Management Framework , 1994, C++ Conference.

[23]  B. Wald Utilization of a multiprocessor in command and control , 1966 .

[24]  I. P. Page Optimal Fit Of Arbitrary Sized Segments , 1982, Comput. J..

[25]  Benjamin G. Zorn,et al.  Memory allocation costs in large C and C++ programs , 1994, Softw. Pract. Exp..

[26]  Ray Ford Concurrent algorithms for real-time memory management , 1988, IEEE Software.

[27]  David Detlefs Garbage Collection and Run-time Typing as a C++ Library , 1992, C++ Conference.

[28]  Dirk Grunwald,et al.  Evaluating models of memory allocation , 1994, TOMC.

[29]  B. Larke The Coming Plague: Newly Emerging Diseases in a World Out of Balance. , 1995 .

[30]  William A. Wulf,et al.  The Design of an Optimizing Compiler , 1975 .

[31]  Juris Hartmanis,et al.  On computational complexity and the nature of computer science , 1995, CSUR.

[32]  William A. Wulf,et al.  An efficient algorithm for heap storage allocation , 1988, SIGP.

[33]  David Gries,et al.  On Structured Programming , 1978 .

[34]  Stein Krogdahl A Dynamic Storage Allocation Problem , 1973, Inf. Process. Lett..

[35]  J. Altham Naming and necessity. , 1981 .

[36]  Robert E. Tarjan,et al.  Self-adjusting binary search trees , 1985, JACM.

[37]  Fred Douglis,et al.  The Compression Cache: Using On-line Compression to Extend Physical Memory , 1993, USENIX Winter.

[38]  Norman R. Nielsen Dynamic memory allocation in computer simulation , 1977, CACM.

[39]  Daniel G. Bobrow,et al.  A Comparison of List-Processing Computer Languages , 1963 .

[40]  Daniel G. Bobrow,et al.  Compact Encodings of List Structure , 1979, TOPL.

[41]  Hans-Juergen Boehm,et al.  Garbage collection in an uncooperative environment , 1988, Softw. Pract. Exp..

[42]  Ifor Williams,et al.  The design and evaluation of a high-performance smalltalk system , 1988 .

[43]  Henry Lieberman,et al.  A real-time garbage collector based on the lifetimes of objects , 1983, CACM.

[44]  Paul Walton Purdom,et al.  Statistical investigation of three storage allocation algorithms , 1971 .

[45]  Dirk Grunwald,et al.  Empirical measurements of six allocation-intensive C programs , 1992, SIGP.

[46]  Theodore Johnson A Concurrent Fast-fits Memory Manager University of Florida, Dept. of Cis Electronic Tr91-009 , 1991 .

[47]  Martin Schatzoff,et al.  Analysis of Free-Storage Algorithms , 1971, IBM Syst. J..

[48]  Terry Betteridge An algebraic analysis of storage fragmentation , 1982 .

[49]  A BarrettDavid,et al.  Using lifetime predictors to improve memory allocation performance , 1993 .

[50]  William H. Tetzlaff,et al.  Analysis of Free-Storage Algorithms - Revisited , 1984, IBM Syst. J..

[51]  G.G. Langdon,et al.  Data compression , 1988, IEEE Potentials.

[52]  Mark Nelson,et al.  The Data Compression Book , 2009 .

[53]  Peter Zilahy Ingerman,et al.  Thunks: a way of compiling procedure statements with some comments on procedure declarations , 1961, CACM.

[54]  Timothy A. Davis,et al.  Parallel Buddy Memory Management , 1992, Parallel Process. Lett..

[55]  James A. Hinds An algorithm for locating adjacent storage blocks in the buddy system , 1975, CACM.

[56]  S. P. Schwartz Naming, necessity, and natural kinds , 1977 .

[57]  Ivor P. Page,et al.  Improving the Performance of Buddy Systems , 1986, IEEE Transactions on Computers.

[58]  Thomas A. Standish Data Structure Techniques , 1980 .

[59]  Frank Jackson,et al.  Tenuring policies for generation-based storage reclamation , 1988, OOPSLA '88.

[60]  P. R. Wilson,et al.  Operating system support for small objects , 1991, Proceedings 1991 International Workshop on Object Orientation in Operating Systems.

[61]  Benjamin G. Zorn,et al.  The measured cost of conservative garbage collection , 1993, Softw. Pract. Exp..

[62]  Amer Diwan,et al.  Memory system performance of programs with intensive heap allocation , 1995, TOCS.

[63]  Barry Hayes Using key object opportunism to collect old objects , 1991, OOPSLA 1991.

[64]  Dirk Grunwald,et al.  Customalloc: Efficient synthesized memory allocators , 1993, Softw. Pract. Exp..

[65]  Douglas T. Ross A generalized technique for symbol manipulation and numerical calculation , 1961, CACM.

[66]  Daniel G. Bobrow,et al.  Combining generational and conservative garbage collection: framework and implementations , 1989, POPL '90.

[67]  Richard P. Brent,et al.  Efficient implementation of the first-fit strategy for dynamic storage allocation , 1989, TOPL.

[68]  J. Minker,et al.  Analysis of data processing systems , 1969 .

[69]  Warren Burton A buddy system variation for disk storage allocation , 1976, CACM.

[70]  J. A. Campbell A Note on an Optimal-Fit Method for Dynamic Allocation of Storage , 1971, Comput. J..

[71]  T. Kuhn,et al.  The Structure of Scientific Revolutions. , 1964 .

[72]  Barry Hayes Key Objects in Garbage Collection , 1993 .

[73]  A. Dain Samples,et al.  Mache: no-loss trace compaction , 1989, SIGMETRICS '89.

[74]  ASDRAS RECSKS ON THE GENERALIZATION OF THE FIBONACCI NUMBERS , 1964 .

[75]  M. D. MacLaren The Art of Computer Programming—Volume 1: Fundamental Algorithms (Donald E. Knuth) , 1969 .

[76]  Paul R. Wilson,et al.  Effective “static-graph” reorganization to improve locality in garbage-collected systems , 1991, PLDI '91.

[77]  C. M. Reeves Free Store Distribution under Random Fit Allocation: Part 3 , 1983, Comput. J..

[78]  Michael A. Bishop Existential Cognition: Computational Minds in the World , 1997 .

[79]  R. R. Oldehoeft,et al.  Parallel Dynamic Storage Allocation , 1985, ICPP.

[80]  Carter Bays,et al.  A comparison of next-fit, first-fit, and best-fit , 1977, CACM.

[81]  Kiem-Phong Vo Vmalloc: A General and Efficient Memory Allocator , 1996 .

[82]  Tom Moher,et al.  Design of the opportunistic garbage collector , 1989, OOPSLA 1989.

[83]  Leland L. Beck,et al.  A dynamic storage allocation technique based on memory residence time , 1982, CACM.

[84]  Juris Hartmanis,et al.  Turing Award lecture on computational complexity and the nature of computer science , 1994, CACM.

[85]  Benjamin G. Zorn,et al.  Using lifetime predictors to improve memory allocation performance , 1993, PLDI '93.

[86]  John Michael Robson,et al.  Worst Case Fragmentation of First Fit and Best Fit Storage Allocation Strategies , 1977, Comput. J..

[87]  James L. Peterson,et al.  A weighted buddy method for dynamic storage allocation , 1974, CACM.

[88]  Frank Jackson,et al.  Tenuring policies for generation-based storage reclamation , 1988, OOPSLA 1988.

[89]  Thomas R. Gross,et al.  Combining the concepts of compression and caching for a two-level filesystem , 1991, ASPLOS IV.

[90]  Dominique Thiébaut,et al.  On the Fractal Dimension of Computer Programs and its Application to the Prediction of the Cache Miss Ratio , 1989, IEEE Trans. Computers.

[91]  David A. Moon,et al.  Garbage collection in a large LISP system , 1984, LFP '84.

[92]  Edward G. Coffman,et al.  On the Asymptotic Optimality of First-Fit Storage Allocation , 1985, IEEE Transactions on Software Engineering.

[93]  David R. Hanson Fast allocation and deallocation of memory based on object lifetimes , 1990, Softw. Pract. Exp..

[94]  Dirk Grunwald,et al.  Improving the cache locality of memory allocation , 1993, PLDI '93.

[95]  Scott D. Carson,et al.  A system for adaptive disk rearrangement , 1990, Softw. Pract. Exp..

[96]  Paul R. Wilson,et al.  Design of the opportunistic garbage collector , 1989, OOPSLA '89.

[97]  James L. Peterson,et al.  Buddy systems , 1977, CACM.

[98]  Mark B. Reinhold,et al.  Cache performance of garbage-collected programs , 1994, PLDI '94.

[99]  James R. Larus,et al.  Optimally profiling and tracing programs , 1992, POPL '92.

[100]  W. T. Comfort Multiword list items , 1964, CACM.

[101]  C. M. Reeves Free Store Distribution Under Random Fit Allocation: Part 2 , 1980, Comput. J..

[102]  Brian Randell,et al.  A note on storage fragmentation and program segmentation , 1969, CACM.

[103]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[104]  Peter Lee,et al.  Cache behavior of combinator graph reduction , 1992, TOPL.

[105]  DAVID L. RUSSELL Internal Fragmentation in a Class of Buddy Systems , 1977, SIAM J. Comput..

[106]  John Michael Robson,et al.  Bounds for Some Functions Concerning Dynamic Storage Allocation , 1974, JACM.

[107]  Mendel Rosenblum,et al.  The design and implementation of a log-structured file system , 1991, SOSP '91.

[108]  R. J. Maher Problems of storage allocation in a multiprocessor multiprogrammed system , 1961, CACM.

[109]  Douglas T. Ross The AED free storage package , 1967, CACM.

[110]  Edward G. Coffman,et al.  Algorithms for resolving conflicts in dynamic storage allocation , 1985, JACM.

[111]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

[112]  John E. Shore,et al.  Anomalous behavior of the fifty-percent rule in dynamic memory allocation , 1977, CACM.

[113]  David Keppel,et al.  Shade: a fast instruction-set simulator for execution profiling , 1994, SIGMETRICS.

[114]  Saul A. Kripke,et al.  Naming and Necessity , 1980 .

[115]  Paul Walton Purdom,et al.  Statistical Properties of the Buddy System , 1970, JACM.

[116]  Eiichi Goto,et al.  A efficient bit table technique for dynamic storage allocation of 2"-word blocks , 1971, CACM.

[117]  Kenneth C. Knowlton,et al.  A fast storage allocator , 1965, CACM.

[118]  H. Putnam Meaning and Reference , 1973 .

[119]  C. J. Stephenson Fast fits--new methods for dynamic storage allocation , 1983 .

[120]  Taiichi Yuasa Design and implementation of Kyoto Common Lisp , 1991 .

[121]  Donald E. Knuth,et al.  The art of computer programming: V.1.: Fundamental algorithms , 1997 .

[122]  Benjamin G. Zorn,et al.  Garbage collection using a dynamic threatening boundary , 1995, PLDI '95.

[123]  Gerald P. Bozman The software lookaside buffler reduces search overhead with linked lists , 1984, CACM.

[124]  Erol Gelenbe,et al.  The Two-Thirds Rule for Dynamic Storage Allocation Under Equilibrium , 1971, Information Processing Letters.

[125]  Daniel G. Bobrow,et al.  A comparison of list-processing computer languages: including a detailed comparison of COMIT, IPL-V, LISP 1.5, and SLIP , 1964, CACM.

[126]  Jeffrey D. Ullman,et al.  Worst-case analysis of memory allocation algorithms , 1972, STOC.

[127]  Charles Burr Weinstock Dynamic storage allocation techniques. , 1976 .

[128]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[129]  Peter Lee,et al.  Cache performance of combinator graph reduction , 1990, Proceedings. 1990 International Conference on Computer Languages.

[130]  R. McClamrock Existential Cognition: Computational Minds in the World , 1995 .

[131]  Kenneth Salem,et al.  Adaptive block rearrangement , 1993, TOCS.

[132]  M. Douglas McIlroy,et al.  The Number of States of a Dynamic Storage Allocation System , 1982, Comput. J..

[133]  J. White,et al.  Address/memory management for a gigantic LISP environment or, GC considered harmful , 1987, LIPO.

[134]  John Michael Robson,et al.  An Estimate of the Store Size Necessary for Dynamic Storage Allocation , 1971, JACM.

[135]  R. Kent Dybvig,et al.  Don't Stop the BIBOP: Flexible and Ecient Storage Management for Dynamically Typed Languages , 1994 .

[136]  Ivor P. Page Analysis of a Cyclic Placement Scheme , 1984, Comput. J..

[137]  Arie E. Kaufman,et al.  Tailored-List and Recombination-Delaying Buddy Systems , 1984, TOPL.

[138]  David C. Wood,et al.  Measurements of segment size , 1970, CACM.

[139]  John Abramowich Storage allocation in a certain iterative process , 1967, CACM.

[140]  Jon L. White,et al.  Address/Memory Management for a Gigantic LISP Environment. , 1980 .

[141]  R. R. Oldehoeft,et al.  Adaptive exact-fit storage management , 1985, CACM.

[142]  Vivek Singhal,et al.  Texas: An Efficient, Portable Persistent Store , 1992, POS.

[143]  Frank Thomson Leighton,et al.  A provably efficient algorithm for dynamic storage allocation , 1986, STOC '86.

[144]  Robert Allen Shaw,et al.  Empirical analysis of a LISP system , 1988 .

[145]  Paul E. McKenney,et al.  Efficient Kernel Memory Allocation on Shared-Memory Multiprocessors , 1993, USENIX Winter.

[146]  Silvano Gai,et al.  Dynamic storage allocation: Experiments using the c language , 1985, Softw. Pract. Exp..

[147]  Alan Jay Smith,et al.  Evaluating Associativity in CPU Caches , 1989, IEEE Trans. Computers.

[148]  Paul R. Wilson,et al.  Caching considerations for generational garbage collection , 1992, LFP '92.

[149]  Philip L. Rosenfeld,et al.  Fractal Nature of Software-Cache Interaction , 1983, IBM J. Res. Dev..

[150]  N. Pierce Origin of Species , 1914, Nature.

[151]  Alan P. Batson,et al.  Program Behavior at the Symbolic Level , 1976, Computer.

[152]  Eric Wolman,et al.  A Fixed Optimum Cell-Size for Records of Various Lengths , 1965, JACM.

[153]  H. D. Baecker Aspects of reference locality in list structures in virtual memory , 1973, Softw. Pract. Exp..

[154]  Carl H. Hauser,et al.  The portable common runtime approach to interoperability , 1989, SOSP '89.

[155]  Kiem-Phong Vo,et al.  Vmalloc: A General and Efficient Memory Allocator , 1996, Softw. Pract. Exp..

[156]  C. M. Reeves Free Store Distribution Under Random Fit Allocation: Part 1 , 1979, Comput. J..

[157]  Andrew W. Appel,et al.  Cache performance of fast-allocating programs , 1995, FPCA '95.

[158]  Scott Shenker,et al.  Mostly parallel garbage collection , 1991, PLDI '91.