Skip to main content

Dynamic storage allocation: A survey and critical review

  • Invited Paper
  • Conference paper
  • First Online:
Memory Management (IWMM 1995)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 986))

Included in the following conference series:

Abstract

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 allocators are to perform well in practice.

This work was supported by the National Science Foundation under grant CCR-9410026, and by a gift from Novell, Inc.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. John Abramowich. Storage allocation in a certain iterative process. Communications of the ACM, 10(6):368–370, June 1967.

    Google Scholar 

  2. G. Attardi and T. Flagella. A customizable memory management framework. In Proceedings of the USENIX C++ Conference, Cambridge, Massachussetts, 1994.

    Google Scholar 

  3. Sedat Akyürek and Kenneth Salem. Adaptive block rearrangement. ACM Transactions on Computer Systems, 13(2):95–121, May 1995.

    Google Scholar 

  4. H. D. Baecker. Aspects of reference locality in list structures in virtual memory. Software Practice and Experience, 3(3):245–254, 1973.

    Google Scholar 

  5. Henry G. Baker. Infant mortality and generational garbage collection. SIGPLAN Notices, 28(4):55–57, April 1993.

    Google Scholar 

  6. B. M. Bigler, S. J. Allan, and R. R. Oldehoeft. Parallel dynamic storage allocation. In 1985 International Conference on Parallel Processing, pages 272–275, 1985.

    Google Scholar 

  7. Alan Batson. Program behavior at the symbolic level. IEEE Computer, pages 21–26, November 1976.

    Google Scholar 

  8. C. Bays. A comparison of next-fit, first-fit and best-fit. Communications of the ACM, 20(3):191–192, March 1977.

    Google Scholar 

  9. A. P. Batson and R. E. Brundage. Segment sizes and lifetimes in ALGOL 60 programs. Communications of the ACM, 20(1):36–44, January 1977.

    Google Scholar 

  10. G. Bozman, W. Buco, T. P. Daly, and W. H. Tetzlaff. Analysis of free storage algorithms—revisited. IBM Systems Journal, 23(1):44–64, 1984.

    Google Scholar 

  11. Daniel G. Bobrow and Douglas W. Clark. Compact encodings of list structure. ACM Transactions on Programming Languages and Systems, 1(2):266–286, October 1979.

    Google Scholar 

  12. B. S. Baker, E. G. Coffman, Jr., and D. E. Willard. Algorithms for resolving conflicts in dynamic storage allocation. Journal of the ACM, 32(2):327–343, April 1985.

    Google Scholar 

  13. Hans-J. Boehm, Alan J. Demers, and Scott Shenker. Mostly parallel garbage collection. In Proceedings of the 1991 SIGPLAN Conference on Programming Language Design and Implementation [PLD91], pages 157–164.

    Google Scholar 

  14. Leland L. Beck. A dynamic storage allocation technique based on memory residence time. Communications of the ACM, 25(10):714–724, October 1982.

    Google Scholar 

  15. V. E. Benes. Models and problems of dynamic storage allocation. In Applied Probability and Computer Science—the Interface. Institute of Management Science and Operations Research Society of America, January 1981.

    Google Scholar 

  16. Terry Betteridge. An analytical storage allocation model. Acta Informatica, 3:101–122, 1973.

    Google Scholar 

  17. Terry Betteridge. An Algebraic Analysis of Storage Fragmentation. UMI Research Press, Ann Arbor, Michigan, 1982.

    Google Scholar 

  18. A. P. Batson, S. M. Ju, and D. C. Wood. Measurements of segment size. Communications of the ACM, 13(3):155–159, March 1970.

    Google Scholar 

  19. Ball and Larus. Optimal profiling and tracing of programs. In Conference Record of the Nineteenth Annual ACM Symposium on Principles of Programming Languages, pages 59–70. ACM Press, January 1992.

    Google Scholar 

  20. Gerald Bozman. The software lookaside buffer reduces search overhead with linked lists. Communications of the ACM, 27(3):222–227, March 1984.

    Google Scholar 

  21. Daniel G. Bobrow and Bertram Raphael. A comparison of list-processing computer languages. Communications of the ACM, 7(4):231–240, April 1964.

    Google Scholar 

  22. R. Brent. Efficient implementation of the first-fit strategy for dynamic storage allocation. ACM Transactions on Programming Languages and Systems, July 1989.

    Google Scholar 

  23. A. G. Bromley. Memory fragmentation in buddy methods for dynamic storage allocation. Acta Informatica, 14(2):107–117, August 1980.

    Google Scholar 

  24. Warren Burton. A buddy system variation for disk storage allocation. Communications of the ACM, 19(7):416–417, July 1976.

    Google Scholar 

  25. Hans-Juergen Boehm and Mark Weiser. Garbage collection in an uncooperative environment. Software Practice and Experience, 18(9):807–820, September 1988.

    Google Scholar 

  26. David A. Barrett and Bejamin G. Zorn. Using lifetime predictors to improve memory allocation performance. In Proceedings of the 1993 SIGPLAN Conference on Programming Language Design and Implementation [PLD93], pages 187–196.

    Google Scholar 

  27. David A. Barrett and Benjamin G. Zorn. Garbage collection using a dynamic threatening boundary. In Proceedings of the 1995 SIGPLAN Conference on Programming Language Design and Implementation, pages 301–314, La Jolla, California, June 1995. ACM Press.

    Google Scholar 

  28. J. A. Campbell. A note on an optimal-fit method for dynamic allocation of storage. Computer Journal, 14(1):7–9, February 1971.

    Google Scholar 

  29. Vincent Cate and Thomas Gross. Combining the concepts of compression and caching for a two-level file system. In Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS IV), pages 200–209, Santa Clara, California, April 1991.

    Google Scholar 

  30. Robert Cmelik and David Keppel. Shade: A fast instruction-set simulator for execution profiling. Technical Report UWCSE 93-06-06, Dept. of Computer Science and Engineering, University of Washington, Seattle, Washington, 1993.

    Google Scholar 

  31. E. G. Coffman, Jr., T. T. Kadota, and L. A. Shepp. On the asymptotic optimality of first-fit storage allocation. IEEE Transactions on Software Engineering, SE-11(2):235–239, February 1985.

    Google Scholar 

  32. E. G. Coffman, Jr. and F. T. Leighton. A provably efficient algorithm for dynamic storage allocation. Journal of Computer and System Sciences, 38(1):2–35, February 1989.

    Google Scholar 

  33. G. O. Collins. Experience in automatic storage allocation. Communications of the ACM, 4(10):436–440, October 1961.

    Google Scholar 

  34. W. T. Comfort. Multiword list items. Communications of the ACM, 7(6), June 1964.

    Google Scholar 

  35. B. Cranston and R. Thomas. A simplified recombination scheme for the Fibonacci buddy system. Communications of the ACM, 18(6):331–332, July 1975.

    Google Scholar 

  36. David Detlefs, Al Dosser, and Benjamin Zorn. Memory allocation costs in large C and C++ programs. Technical Report CU-CS-665-93, University of Colorado at Boulder, Dept. of Computer Science, Boulder, Colorado, August 1993.

    Google Scholar 

  37. R. Kent Dybvig, David Eby, and Carl Bruggeman. Don't stop the BIBOP: Flexible and efficient storage management for dynamically typed languages. Technical Report 400, Indiana University Computer Science Dept., March 1994.

    Google Scholar 

  38. V. Delacour. Allocation regions and implementation contracts. In Yves Bekkers and Jacques Cohen, editors, International Workshop on Memory Management, number 637 in Lecture Notes in Computer Science, pages 426–439, St. Malo, France, September 1992. Springer-Verlag.

    Google Scholar 

  39. Peter J. Denning. Virtual memory. Computing Surveys, 3(2):153–189, September 1970.

    Google Scholar 

  40. David L. Detlefs. Garbage collection and runtime typing as a C++ library. In USENIX C++ Conference, Portland, Oregon, August 1992. USENIX Association.

    Google Scholar 

  41. Edsger W. Dijkstra. Notes on structured programming. In Structured Programming. Academic Press, 1969.

    Google Scholar 

  42. Fred Douglis. The compression cache: Using on-line compression to extend physical memory. In Proceedings of 1993 Winter USENIX Conference, pages 519–529, San Diego, California, January 1993.

    Google Scholar 

  43. Amer Diwan, David Tarditi, and Eliot Moss. Memory subsystem performance of programs with intensive heap allocation. Submitted for publication, August 1993.

    Google Scholar 

  44. Alan Demers, Mark Weiser, Barry Hayes, Daniel Bobrow, and Scott Shenker. Combining generational and conservative garbage collection: Framework and implementations. In Conference Record of the Seventeenth Annual ACM Symposium on Principles of Programming Languages, pages 261–269, San Francisco, California, January 1990. ACM Press.

    Google Scholar 

  45. C. S. Ellis and T. J. Olson. Algorithms for parallel memory allocation. International Journal of Parallel Programming, 17(4):303–345, 1988.

    Google Scholar 

  46. H. R. P. Ferguson. On a generalization of the Fibonacci numbers useful in memory allocation schema. The Fibonacci Quarterly, 14(3):233–243, October 1976.

    Google Scholar 

  47. R. Ford. Concurrent algorithms for real-time memory management. IEEE Software, pages 10–23, September 1988.

    Google Scholar 

  48. J. S. Fenton and D. W. Payne. Dynamic storage allocations of arbitrary sized segments. In Proc. IFIPS, pages 344–348, 1974.

    Google Scholar 

  49. Matthew Farrens and Arvin Park. Dynamic base register caching: A technique for reducing address bus width. In 18th Annual International Symposium on Computer Architecture, pages 128–137, Toronto, Canada, May 1991. ACM Press.

    Google Scholar 

  50. Marcelo J. R. Goncalves and Andrew W. Appel. Cache performance of fast-allocating programs. In FPCA '95, 1995.

    Google Scholar 

  51. E. Gelenbe. The two-thirds rule for dynamic storage allocation under equilibrium. Information Processing Letters, 1(2):59–60, July 1971.

    Google Scholar 

  52. M. R. Garey, R. L. Graham, and J. D. Ullman. Worst-case analysis of memory allocation algorithms. In Fourth Annual ACM Symposium on the Theory of Computing, 1972.

    Google Scholar 

  53. S. Gai and M. Mezzalama. Dynamic storage allocation: Experiments using the C language. Software Practice and Experience, 15(7):693–704, July 1985.

    Google Scholar 

  54. R. L. Graham. Unpublished technical report on worst-case analysis of memory allocation algorithms, Bell Labs.

    Google Scholar 

  55. A. Gottlieb and J. Wilson. Parallelizing the usual buddy algorithm. Technical Report System Software Note 37, Courant Institute, New York University, 1982.

    Google Scholar 

  56. Dirk Grunwald and Benjamin Zorn. CustoMalloc: Efficient synthesized memory allocators. Software Practice and Experience, 23(8):851–869, August 1993.

    Google Scholar 

  57. Dirk Grunwald, Benjamin Zorn, and Robert Henderson. Improving the cache locality of memory allocation. In Proceedings of the 1993 SIGPLAN Conference on Programming Language Design and Implementation [PLD93], pages 177–186.

    Google Scholar 

  58. David R. Hanson. Fast allocation and deallocation of memory based on object lifetimes. Software Practice and Experience, 20(1), January 1990.

    Google Scholar 

  59. Juris Hartmanis. Turing award lecture: On computational complexity and the nature of computer science. Computing Surveys, 27(1):7–16, March 1995.

    Google Scholar 

  60. Barry Hayes. Using key object opportunism to collect old objects. In Andreas Paepcke, editor, Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA '91), pages 33–46, Phoenix, Arizona, October 1991. ACM Press.

    Google Scholar 

  61. Barry Hayes. Key Objects in Garbage Collection. PhD thesis, Standford University, March 1993.

    Google Scholar 

  62. J. A. Hinds. An algorithm for locating adjacent storage blocks in the buddy system. Communications of the ACM, 18(4):221–222, April 1975.

    Google Scholar 

  63. D. S. Hirschberg. A class of dynamic memory allocation algorithms. Communications of the ACM, 16(10):615–618, October 1973.

    Google Scholar 

  64. V. C. Harris and C. C. Styles. A generalization of the Fibonacci numbers. The Fibonacci Quarterly, 2(4):227–289, December 1964.

    Google Scholar 

  65. Mark D. Hill and Alan Jay Smith. Evaluating associativity in CPU caches. IEEE Transactions on Computers, 38(12):1612–1629, December 1989.

    Google Scholar 

  66. S. Isoda, E. Goto, and I. Kimura. An efficient bit table technique for dynamic storage allocation of 2n-word blocks. Communications of the ACM, 14(9):589–592, September 1971.

    Google Scholar 

  67. J. K. Iliffe and J. G. Jodeit. A dynamic storage allocation scheme. Computer Journal, 5(3):200–209, October 1962.

    Google Scholar 

  68. P. Z. Ingerman. Thunks. Communications of the ACM, 4(1):55–58, January 1961.

    Google Scholar 

  69. Arun K. Iyengar. Parallel dynamic storage allocation algorithms. In Fifth IEEE Symposium on Parallel and Distributed Processing, 1993.

    Google Scholar 

  70. G. D. Johnson. Simscript II.5 User's Manual, S/360-370 Version, Release 6, 1972.

    Google Scholar 

  71. Theodore Johnson. A concurrent fast fits memory manager. Technical Report 91-009, University of Florida, 1991.

    Google Scholar 

  72. T. Johnson and D. Sasha. Parallel buddy memory management. Parallel Processing Letters, 2(4):391–398, 1992.

    Google Scholar 

  73. Arie Kaufman. Tailored-list and recombination-delaying buddy systems. ACM Transactions on Programming Languages and Systems, 6(4):118–125, 1984.

    Google Scholar 

  74. Phillip J. Koopman, Jr., Peter Lee, and Daniel P. Siewiorek. Cache performance of combinator graph reduction. ACM Transactions on Programming Languages and Systems, 14(2):265–297, April 1992.

    Google Scholar 

  75. Kenneth C. Knowlton. A fast storage allocator. Communications of the ACM, 8(10):623–625, October 1965.

    Google Scholar 

  76. Donald E. Knuth. The Art of Computer Programming, volume 1: Fundamental Algorithms. Addison-Wesley, Reading, Massachusetts, 1973. First edition published in 1968.

    Google Scholar 

  77. Saul A. Kripke. Naming and Necessity. Harvard University Press, 1972.

    Google Scholar 

  78. S. Krogdahl. A dynamic storage allocation problem. Information Processing Letters, 2:96–99, 1973.

    Google Scholar 

  79. Thomas S. Kuhn. The Structure of Scientific Revolutions (Second Edition, Enlarged). University of Chicago Press, Chicago, Illinois, 1970.

    Google Scholar 

  80. David G. Korn and Kiem-Phong Vo. In search of a better malloc. In Proc. USENIX Summer 1985, pages 489–506, Portland, Oregon, June 1985. USENIX Association.

    Google Scholar 

  81. B. W. Leverett and P. G. Hibbard. An adaptive system for dynamic storage allocation. Software Practice and Experience, 12(6):543–556, June 1982.

    Google Scholar 

  82. Henry Lieberman and Carl Hewitt. A real-time garbage collector based on the lifetimes of objects. Communications of the ACM, 26(6):419–429, June 1983.

    Google Scholar 

  83. J. Minker et al. Analysis of data processing systems. Technical Report 69-99, University of Maryland, College Park, Maryland, 1969.

    Google Scholar 

  84. R. J. Maher. Problems of storage allocation in a multiprocessor multiprogrammed system. Communications of the ACM, 4(10):421–422, October 1961.

    Google Scholar 

  85. David Marr. Vision. Freeman, New York, 1982.

    Google Scholar 

  86. Ronald McClamrock. Marr's three levels: a re-evaluation. Minds and Machines, 1:185–196, 1991.

    Google Scholar 

  87. Ronald McClamrock. Existential Cognition: Computational Minds in the World. University of Chicago Press, 1995.

    Google Scholar 

  88. M. D. Mcllroy. The number of states of a dynamic storage allocation system. Computer Journal, 25(3):388–392, August 1982.

    Google Scholar 

  89. Marshall Kirk McKusick and Michael J. Karels. Design of a generalpurpose memory allocator for the 4.3bsd UNIX kernel. In Proceedings of the Summer 1988 USENIX Conference, San Francisco, California, June 1988. USENIX Association.

    Google Scholar 

  90. David Moon. Garbage collection in a large Lisp system. In Conference Record of the 1984 ACM Symposium on LISP and Functional Programming, pages 235–246, Austin, Texas, August 1984. ACM Press.

    Google Scholar 

  91. B. H. Margolin, R. P. Parmelee, and M. Schatzoff. Analysis of free-storage algorithms. IBM Systems Journal, 10(4):283–304, 1971.

    Google Scholar 

  92. Paul E. McKenney and Jack Slingwine. Efficient kernel memory allocation on shared-memory multiprocessors. In USENIX 1993 Winter Technical Conference, San Diego, California, January 1993. USENIX Association.

    Google Scholar 

  93. Mark Nelson. The Data Compression Book. M & T Books, 1991.

    Google Scholar 

  94. N. R. Nielsen. Dynamic memory allocation in computer simulation. Communications of the ACM, 20(11):864–873, November 1977.

    Google Scholar 

  95. R. R. Oldehoeft and S. J. Allan. Actaptive exact-fit storage management. Communications of the ACM, 28(5):506–511, May 1985.

    Google Scholar 

  96. Ivor P. Page. Optimal fit of arbitrary sized segments. British Computer Journal, 25(1), January 1982.

    Google Scholar 

  97. Ivor P. Page. Analysis of a cyclic placement scheme. Computer Journal, 27(1):18–25, January 1984.

    Google Scholar 

  98. Ivor P. Page and Jeff Hagins. Improving the performance of buddy systems. IEEE Transactions on Computers, C-35(5):441–447, May 1986.

    Google Scholar 

  99. Proceedings of the 1991 SIGPLAN Conference on Programming Language Design and Implementation, Toronto, Ontario, June 1991. ACM Press. Published as SIGPLAN Notices 26(6), June 1992.

    Google Scholar 

  100. Proceedings of the 1993 SIGPLAN Conference on Programming Language Design and Implementation, Albuquerque, New Mexico, June 1993. ACM Press.

    Google Scholar 

  101. J. L. Peterson and T. A. Norman. Buddy systems. Communications of the ACM, 20(6):421–431, June 1977.

    Google Scholar 

  102. P.W. Purdom and S. M. Stigler. Statistical properties of the buddy system. Journal of the ACM, 17(4):683–697, October 1970.

    Google Scholar 

  103. P. W. Purdom, S. M. Stigler, and Tat-Ong Cheam. Statistical investigation of three storage allocation algorithms. BIT, 11:187–195, 1971.

    Google Scholar 

  104. Brian Randell. A note on storage fragmentation and program segmentation. Communications of the ACM, 12(7):365–372, July 1969.

    Google Scholar 

  105. C. M. Reeves. Free store distribution under random-fit allocation. Computer Journal, 22(4):346–351, November 1979.

    Google Scholar 

  106. C. M. Reeves. Free store distribution under random-fit allocation: Part 2. Computer Journal, 23(4):298–306, November 1980.

    Google Scholar 

  107. C. M. Reeves. A lumped-state model of clustering in dynamic storage allocation. Computer Journal, 27(2):135–142, 1982.

    Google Scholar 

  108. C. M. Reeves. Free store distribution under random-fit allocation, part 3. Computer Journal, 26(1):25–35, February 1983.

    Google Scholar 

  109. Mark B. Reinhold. Cache performance of garbage-collected programs. In Proceedings of the 1994 SIGPLAN Conference on Programming Language Design and Implementation, pages 206–217, Orlando, Florida, June 1994. ACM Press.

    Google Scholar 

  110. Mendel Rosenblum and John K. Ousterhout. The design and implementation of a log-structured file system. In Proceedings of the Thirteenth Symposium on Operating Systems Principles, pages 1–15, Pacific Grove, California, October 1991. ACM Press. Published as Operating Systems Review 25(5).

    Google Scholar 

  111. J. M. Robson. An estimate of the store size necessary for dynamic storage allocation. Journal of the ACM, 18(3):416–423, July 1971.

    Google Scholar 

  112. J. M. Robson. Bounds for some functions concerning dynamic storage allocation. Journal of the ACM, 21(3):491–499, July 1974.

    Google Scholar 

  113. J. M. Robson. Worst case fragmentation of first fit and best fit storage allocation strategies. Computer Journal, 20(3):242–244, August 1977.

    Google Scholar 

  114. D. T. Ross. A generalized technique for symbol manipulation and numerical calculation. Communications of the ACM, 4(3):147–150, March 1961.

    Google Scholar 

  115. D. T. Ross. The AED free storage package. Communications of the ACM, 10(8):481–492, August 1967.

    Google Scholar 

  116. D. L. Russell. Internal fragmentation in a class of buddy systems. SIAM J. Comput., 6(4):607–621, December 1977.

    Google Scholar 

  117. A. Dain Samples. Mache: No-loss trace compaction. In ACM SIGMET-RICS, pages 89–97, May 1989.

    Google Scholar 

  118. Robert A. Shaw. Empirical Analysis of a Lisp System. PhD thesis, Stanford University, Palo Alto, California, February 1988. Technical Report CSL-TR-88-351, Stanford University Computer Systems Laboratory.

    Google Scholar 

  119. J. E. Shore. On the external storage fragmentation produced by first-fit and best-fit allocation strategies. Communications of the ACM, 18(8):433–440, August 1975.

    Google Scholar 

  120. J. E. Shore. Anomalous behavior of the fifty-percent rule in dynamic memory allocation. Communications of the ACM, 20(11):558–562, November 1977.

    Google Scholar 

  121. Vivek Singhal, Sheetal V. Kakkad, and Paul R. Wilson. Texas: an efficient, portable persistent store. In Antonio Albano and Ron Morrison, editors, Fifth International Workshop on Persistent Object Systems, pages 11–33, San Miniato, Italy, September 1992. Springer-Verlag.

    Google Scholar 

  122. K. K. Shen and J. L. Peterson. A weighted buddy method for dynamic storage allocation. Communications of the ACM, 17(10):558–562, October 1974.

    Google Scholar 

  123. Daniel Dominic Sleator and Robert Endre Tarjan. Self-adjusting binary search trees. Journal of the ACM, 32(3), 1985.

    Google Scholar 

  124. Thomas Standish. Data Structure Techniques. Addison-Wesley, Reading, Massachusetts, 1980.

    Google Scholar 

  125. C. J. Stephenson. Fast fits: New methods for dynamic storage allocation. In Proceedings of the Ninth Symposium on Operating Systems Principles, pages 30–32, Bretton Woods, New Hampshire, October 1983. ACM Press. blished as Operating Systems Review 17(5), October 1983.

    Google Scholar 

  126. Harold S. Stone. Parallel memory allocation using the FETCH-AND-ADD instruction. Technical report, IBM Thomas J. Watson Research Center, Yorktown Heights, New York, November 1982.

    Google Scholar 

  127. M. Tadman. Fast-fit: A new hierarchical dynamic storage allocation technique. Master's thesis, UC Irvine, Computer Science Dept., 1978.

    Google Scholar 

  128. Dominique Thiebaut. The fractal dimension of computer programs and its application to the prediction of the cache miss ratio. IEEE Transactions on Computers, pages 1012–1026, July 1989.

    Google Scholar 

  129. R. A. Totschek. An empirical investigation into the behavior of the SDC timesharing system. Technical Report SP2191, Systems Development Corporation, 1965.

    Google Scholar 

  130. David Ungar and Frank Jackson. Tenuring policies for generation-based storage reclamation. In Norman Meyrowitz, editor, Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA '88) Proceedings, pages 1–17, San Diego, California, September 1988. ACM Press.

    Google Scholar 

  131. Jeffrey D. Ullman. The role of theory today. Computing Surveys, 27(1):43–44, March 1995.

    Google Scholar 

  132. David Ungar. Design and Evaluation of a High-Performance Smalltalk System. MIT Press, Cambridge, Massachusetts, 1986.

    Google Scholar 

  133. P. Vongsathorn and S. D. Carson. A system for adaptive disk rearrangement. Software Practice and Experience, 20(3):225–242, March 1990.

    Google Scholar 

  134. [VMH+83] J. Voldman, B. Mandelbrot, L. W. Hoevel, J. Knight, and P. Rosenfeld. Fractal nature of software-cache interaction. IBM Journal of Research and Development, 27(2):164–170, March 1983.

    Google Scholar 

  135. Kiem-Phong Vo. Vmalloc: A general and efficient memory allocator. Software Practice and Experience, 1995. To appear.

    Google Scholar 

  136. Jean Vuillemin. A unifying look at data structures. Communications of the ACM, 29(4):229–239, April 1980.

    Google Scholar 

  137. B. Wald. Utilization of a multiprocessor in command and control. Proceedings of the IEEE, 53(12):1885–1888, December 1966.

    Google Scholar 

  138. Paul R. Wilson and V. B. Balayoghan. Compressed paging. In preparation, 1995.

    Google Scholar 

  139. Mark Weiser, Alan Demers, and Carl Hauser. The portable common runtime approach to interoperability. In Proceedings of the Twelfth Symposium on Operating Systems Principles, December 1989.

    Google Scholar 

  140. Charles B. Weinstock. Dynamic Storage Allocation Techniques. PhD thesis, Carnegie-Mellon University, Pittsburgh, Pennsylvania, April 1976.

    Google Scholar 

  141. Jon L. White. Address/memory management for a gigantic Lisp environment, or, GC considered harmful. In LISP Conference, pages 119–127, Redwood Estates, California, August 1980.

    Google Scholar 

  142. Paul R. Wilson. Some issues and strategies in heap management and memory hierarchies. In OOPSLA/ECOOP '90 Workshop on Garbage Collection in Object-Oriented Systems, October 1990. Also appears in SIGPLAN Notices 23(3):45–52, March 1991.

    Google Scholar 

  143. Paul R. Wilson. Operating system support for small objects. In International Workshop on Object Orientation in Operating Systems, pages 80–86, Palo Alto, California, October 1991. IEEE Press.

    Google Scholar 

  144. Paul R. Wilson. Garbage collection. Computing Surveys, 1995. Expanded version of [?]. Draft available via anonymous internet FTP from cs.utexas.edu as pub/garbage/bigsurv.ps. In revision, to appear.

    Google Scholar 

  145. David S. Wise. The double buddy-system. Technical Report 79, Computer Science Department, Indiana University, Bloomington, Indiana, December 1978.

    Google Scholar 

  146. Paul R. Wilson and Mark S. Johnstone. Truly real-time non-copying garbage collection. In OOPSLA '93 Workshop on Memory Management and Garbage Collection, December 1993. Expanded version of workshop position paper submitted for publication.

    Google Scholar 

  147. Paul R. Wilson, Mark S. Johnstone, Michael Neely, and David Boles. Memory allocation policies reconsidered. Technical report, University of Texas at Austin Department of Computer Sciences, 1995.

    Google Scholar 

  148. William A. Wulf, R. K. Johnsson, C. B. Weinstock, S. O. Hobbs, and C. M. Geschke. Design of an Optimizing Compiler. American Elsevier, 1975.

    Google Scholar 

  149. Paul R. Wilson, Michael S. Lam, and Thomas G. Moher. Effective staticgraph reorganization to improve locality in garbage-collected systems. In Proceedings of the 1991 SIGPLAN Conference on Programming Language Design and Implementation [PLD91], pages 177–191. Published as SIGPLAN Notices 26(6), June 1992.

    Google Scholar 

  150. Paul R. Wilson, Michael S. Lam, and Thomas G. Moher. Caching considerations for generational garbage collection. In Conference Record of the 1992 ACM Symposium on LISP and Functional Programming, pages 32–42, San Francisco, California, June 1992. ACM Press.

    Google Scholar 

  151. Paul R. Wilson and Thomas G. Moher. Design of the Opportunistic Garbage Collector. In Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA '89) Proceedings, pages 23–35, New Orleans, Louisiana, 1989. ACM Press.

    Google Scholar 

  152. Eric Wolman. A fixed optimum cell-size for records of various lengths. Journal of the ACM, 12(1):53–70, January 1965.

    Google Scholar 

  153. Charles B. Weinstock and William A. Wulf. Quickfit: an efficient algorithm for heap storage allocation. ACM SIGPLAN Notices, 23(10):141–144, October 1988.

    Google Scholar 

  154. Taichi Yuasa. The design and implementation of Kyoto Common Lisp. Journal of Information Processing, 13(3), 1990.

    Google Scholar 

  155. Benjamin Zorn and Dirk Grunwald. Empirical measurements of six allocation-intensive C programs. Technical Report CU-CS-604-92, University of Colorado at Boulder, Dept. of Computer Science, July 1992.

    Google Scholar 

  156. Benjamin Zorn and Dirk Grunwald. Evaluating models of memory allocation. ACM Transactions on Modeling and Computer Simulation, 1(4):107–131, 1994.

    Google Scholar 

  157. Benjamin Zorn. The measured cost of conservative garbage collection. Software—Practice and Experience, 23(7):733–756, July 1993.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to David Boles .

Editor information

Henry G. Baler

Rights and permissions

Reprints and permissions

Copyright information

© 1995 Springer-Verlag

About this paper

Cite this paper

Wilson, P.R., Johnstone, M.S., Neely, M., Boles, D. (1995). Dynamic storage allocation: A survey and critical review. In: Baler, H.G. (eds) Memory Management. IWMM 1995. Lecture Notes in Computer Science, vol 986. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-60368-9_19

Download citation

  • DOI: https://doi.org/10.1007/3-540-60368-9_19

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-60368-9

  • Online ISBN: 978-3-540-45511-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics