Dynamic storage allocation: A survey and critical review

  • Paul R. Wilson
  • Mark S. Johnstone
  • Michael Neely
  • David Boles
Invited Paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 986)

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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [Abr67]
    John Abramowich. Storage allocation in a certain iterative process. Communications of the ACM, 10(6):368–370, June 1967.Google Scholar
  2. [AF94]
    G. Attardi and T. Flagella. A customizable memory management framework. In Proceedings of the USENIX C++ Conference, Cambridge, Massachussetts, 1994.Google Scholar
  3. [AS95]
    Sedat Akyürek and Kenneth Salem. Adaptive block rearrangement. ACM Transactions on Computer Systems, 13(2):95–121, May 1995.Google Scholar
  4. [Bae73]
    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. [Bak93]
    Henry G. Baker. Infant mortality and generational garbage collection. SIGPLAN Notices, 28(4):55–57, April 1993.Google Scholar
  6. [BAO85]
    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. [Bat76]
    Alan Batson. Program behavior at the symbolic level. IEEE Computer, pages 21–26, November 1976.Google Scholar
  8. [Bay77]
    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. [BB77]
    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. [BBDT84]
    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. [BC79]
    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. [BCW85]
    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. [BDS91]
    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. [Bec82]
    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. [Ben81]
    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. [Bet73]
    Terry Betteridge. An analytical storage allocation model. Acta Informatica, 3:101–122, 1973.Google Scholar
  17. [Bet82]
    Terry Betteridge. An Algebraic Analysis of Storage Fragmentation. UMI Research Press, Ann Arbor, Michigan, 1982.Google Scholar
  18. [BJW70]
    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. [BL92]
    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. [Boz84]
    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. [BR64]
    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. [Bre89]
    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. [Bro80]
    A. G. Bromley. Memory fragmentation in buddy methods for dynamic storage allocation. Acta Informatica, 14(2):107–117, August 1980.Google Scholar
  24. [Bur76]
    Warren Burton. A buddy system variation for disk storage allocation. Communications of the ACM, 19(7):416–417, July 1976.Google Scholar
  25. [BW88]
    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. [BZ93]
    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. [BZ95]
    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. [Cam71]
    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. [CG91]
    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. [CK93]
    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. [CKS85]
    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. [CL89]
    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. [Col61]
    G. O. Collins. Experience in automatic storage allocation. Communications of the ACM, 4(10):436–440, October 1961.Google Scholar
  34. [Com64]
    W. T. Comfort. Multiword list items. Communications of the ACM, 7(6), June 1964.Google Scholar
  35. [CT75]
    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. [DDZ93]
    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. [DEB94]
    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. [Del92]
    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. [Den70]
    Peter J. Denning. Virtual memory. Computing Surveys, 3(2):153–189, September 1970.Google Scholar
  40. [Det92]
    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. [Dij69]
    Edsger W. Dijkstra. Notes on structured programming. In Structured Programming. Academic Press, 1969.Google Scholar
  42. [Dou93]
    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. [DTM93]
    Amer Diwan, David Tarditi, and Eliot Moss. Memory subsystem performance of programs with intensive heap allocation. Submitted for publication, August 1993.Google Scholar
  44. [DWH+90]
    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. [EO88]
    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. [Fer76]
    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. [For88]
    R. Ford. Concurrent algorithms for real-time memory management. IEEE Software, pages 10–23, September 1988.Google Scholar
  48. [FP74]
    J. S. Fenton and D. W. Payne. Dynamic storage allocations of arbitrary sized segments. In Proc. IFIPS, pages 344–348, 1974.Google Scholar
  49. [FP91]
    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. [GA95]
    Marcelo J. R. Goncalves and Andrew W. Appel. Cache performance of fast-allocating programs. In FPCA '95, 1995.Google Scholar
  51. [Gel71]
    E. Gelenbe. The two-thirds rule for dynamic storage allocation under equilibrium. Information Processing Letters, 1(2):59–60, July 1971.Google Scholar
  52. [GGU72]
    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. [GM85]
    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. [Gra]
    R. L. Graham. Unpublished technical report on worst-case analysis of memory allocation algorithms, Bell Labs.Google Scholar
  55. [GW82]
    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. [GZ93]
    Dirk Grunwald and Benjamin Zorn. CustoMalloc: Efficient synthesized memory allocators. Software Practice and Experience, 23(8):851–869, August 1993.Google Scholar
  57. [GZH93]
    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. [Han90]
    David R. Hanson. Fast allocation and deallocation of memory based on object lifetimes. Software Practice and Experience, 20(1), January 1990.Google Scholar
  59. [Har95]
    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. [Hay91]
    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. [Hay93]
    Barry Hayes. Key Objects in Garbage Collection. PhD thesis, Standford University, March 1993.Google Scholar
  62. [Hin75]
    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. [Hir73]
    D. S. Hirschberg. A class of dynamic memory allocation algorithms. Communications of the ACM, 16(10):615–618, October 1973.Google Scholar
  64. [HS64]
    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. [HS89]
    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. [IGK71]
    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. [IJ62]
    J. K. Iliffe and J. G. Jodeit. A dynamic storage allocation scheme. Computer Journal, 5(3):200–209, October 1962.Google Scholar
  68. [Ing61]
    P. Z. Ingerman. Thunks. Communications of the ACM, 4(1):55–58, January 1961.Google Scholar
  69. [Iye93]
    Arun K. Iyengar. Parallel dynamic storage allocation algorithms. In Fifth IEEE Symposium on Parallel and Distributed Processing, 1993.Google Scholar
  70. [Joh72]
    G. D. Johnson. Simscript II.5 User's Manual, S/360-370 Version, Release 6, 1972.Google Scholar
  71. [Joh91]
    Theodore Johnson. A concurrent fast fits memory manager. Technical Report 91-009, University of Florida, 1991.Google Scholar
  72. [JS92]
    T. Johnson and D. Sasha. Parallel buddy memory management. Parallel Processing Letters, 2(4):391–398, 1992.Google Scholar
  73. [Kau84]
    Arie Kaufman. Tailored-list and recombination-delaying buddy systems. ACM Transactions on Programming Languages and Systems, 6(4):118–125, 1984.Google Scholar
  74. [KLS92]
    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. [Kno65]
    Kenneth C. Knowlton. A fast storage allocator. Communications of the ACM, 8(10):623–625, October 1965.Google Scholar
  76. [Knu73]
    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. [Kri72]
    Saul A. Kripke. Naming and Necessity. Harvard University Press, 1972.Google Scholar
  78. [Kro73]
    S. Krogdahl. A dynamic storage allocation problem. Information Processing Letters, 2:96–99, 1973.Google Scholar
  79. [Kuh70]
    Thomas S. Kuhn. The Structure of Scientific Revolutions (Second Edition, Enlarged). University of Chicago Press, Chicago, Illinois, 1970.Google Scholar
  80. [KV85]
    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. [LH82]
    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. [LH83]
    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. [M+69]
    J. Minker et al. Analysis of data processing systems. Technical Report 69-99, University of Maryland, College Park, Maryland, 1969.Google Scholar
  84. [Mah61]
    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. [Mar82]
    David Marr. Vision. Freeman, New York, 1982.Google Scholar
  86. [McC91]
    Ronald McClamrock. Marr's three levels: a re-evaluation. Minds and Machines, 1:185–196, 1991.Google Scholar
  87. [McC95]
    Ronald McClamrock. Existential Cognition: Computational Minds in the World. University of Chicago Press, 1995.Google Scholar
  88. [McI82]
    M. D. Mcllroy. The number of states of a dynamic storage allocation system. Computer Journal, 25(3):388–392, August 1982.Google Scholar
  89. [MK88]
    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. [Moo84]
    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. [MPS71]
    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. [MS93]
    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. [Nel91]
    Mark Nelson. The Data Compression Book. M & T Books, 1991.Google Scholar
  94. [Nie77]
    N. R. Nielsen. Dynamic memory allocation in computer simulation. Communications of the ACM, 20(11):864–873, November 1977.Google Scholar
  95. [OA85]
    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. [Pag82]
    Ivor P. Page. Optimal fit of arbitrary sized segments. British Computer Journal, 25(1), January 1982.Google Scholar
  97. [Pag84]
    Ivor P. Page. Analysis of a cyclic placement scheme. Computer Journal, 27(1):18–25, January 1984.Google Scholar
  98. [PH86]
    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. [PLD91]
    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. [PLD93]
    Proceedings of the 1993 SIGPLAN Conference on Programming Language Design and Implementation, Albuquerque, New Mexico, June 1993. ACM Press.Google Scholar
  101. [PN77]
    J. L. Peterson and T. A. Norman. Buddy systems. Communications of the ACM, 20(6):421–431, June 1977.Google Scholar
  102. [PS70]
    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. [PSC71]
    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. [Ran69]
    Brian Randell. A note on storage fragmentation and program segmentation. Communications of the ACM, 12(7):365–372, July 1969.Google Scholar
  105. [Ree79]
    C. M. Reeves. Free store distribution under random-fit allocation. Computer Journal, 22(4):346–351, November 1979.Google Scholar
  106. [Ree80]
    C. M. Reeves. Free store distribution under random-fit allocation: Part 2. Computer Journal, 23(4):298–306, November 1980.Google Scholar
  107. [Ree82]
    C. M. Reeves. A lumped-state model of clustering in dynamic storage allocation. Computer Journal, 27(2):135–142, 1982.Google Scholar
  108. [Ree83]
    C. M. Reeves. Free store distribution under random-fit allocation, part 3. Computer Journal, 26(1):25–35, February 1983.Google Scholar
  109. [Rei94]
    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. [RO91]
    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. [Rob71]
    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. [Rob74]
    J. M. Robson. Bounds for some functions concerning dynamic storage allocation. Journal of the ACM, 21(3):491–499, July 1974.Google Scholar
  113. [Rob77]
    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. [Ros61]
    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. [Ros67]
    D. T. Ross. The AED free storage package. Communications of the ACM, 10(8):481–492, August 1967.Google Scholar
  116. [Rus77]
    D. L. Russell. Internal fragmentation in a class of buddy systems. SIAM J. Comput., 6(4):607–621, December 1977.Google Scholar
  117. [Sam89]
    A. Dain Samples. Mache: No-loss trace compaction. In ACM SIGMET-RICS, pages 89–97, May 1989.Google Scholar
  118. [Sha88]
    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. [Sho75]
    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. [Sho77]
    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. [SKW92]
    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. [SP74]
    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. [ST85]
    Daniel Dominic Sleator and Robert Endre Tarjan. Self-adjusting binary search trees. Journal of the ACM, 32(3), 1985.Google Scholar
  124. [Sta80]
    Thomas Standish. Data Structure Techniques. Addison-Wesley, Reading, Massachusetts, 1980.Google Scholar
  125. [Ste83]
    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. [Sto82]
    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. [Tad78]
    M. Tadman. Fast-fit: A new hierarchical dynamic storage allocation technique. Master's thesis, UC Irvine, Computer Science Dept., 1978.Google Scholar
  128. [Thi89]
    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. [Tot65]
    R. A. Totschek. An empirical investigation into the behavior of the SDC timesharing system. Technical Report SP2191, Systems Development Corporation, 1965.Google Scholar
  130. [UJ88]
    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. [Ull95]
    Jeffrey D. Ullman. The role of theory today. Computing Surveys, 27(1):43–44, March 1995.Google Scholar
  132. [Ung86]
    David Ungar. Design and Evaluation of a High-Performance Smalltalk System. MIT Press, Cambridge, Massachusetts, 1986.Google Scholar
  133. [VC90]
    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]
    [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. [Vo95]
    Kiem-Phong Vo. Vmalloc: A general and efficient memory allocator. Software Practice and Experience, 1995. To appear.Google Scholar
  136. [Vui80]
    Jean Vuillemin. A unifying look at data structures. Communications of the ACM, 29(4):229–239, April 1980.Google Scholar
  137. [Wal66]
    B. Wald. Utilization of a multiprocessor in command and control. Proceedings of the IEEE, 53(12):1885–1888, December 1966.Google Scholar
  138. [WB95]
    Paul R. Wilson and V. B. Balayoghan. Compressed paging. In preparation, 1995.Google Scholar
  139. [WDH89]
    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. [Wei76]
    Charles B. Weinstock. Dynamic Storage Allocation Techniques. PhD thesis, Carnegie-Mellon University, Pittsburgh, Pennsylvania, April 1976.Google Scholar
  141. [Whi80]
    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. [Wil90]
    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. [Wil91]
    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. [Wil95]
    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. [Wis78]
    David S. Wise. The double buddy-system. Technical Report 79, Computer Science Department, Indiana University, Bloomington, Indiana, December 1978.Google Scholar
  146. [WJ93]
    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. [WJNB95]
    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. [WJW+75]
    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. [WLM91]
    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. [WLM92]
    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. [WM89]
    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. [Wol65]
    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. [WW88]
    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. [Yua90]
    Taichi Yuasa. The design and implementation of Kyoto Common Lisp. Journal of Information Processing, 13(3), 1990.Google Scholar
  155. [ZG92]
    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. [ZG94]
    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. [Zor93]
    Benjamin Zorn. The measured cost of conservative garbage collection. Software—Practice and Experience, 23(7):733–756, July 1993.Google Scholar

Copyright information

© Springer-Verlag 1995

Authors and Affiliations

  • Paul R. Wilson
    • 1
  • Mark S. Johnstone
    • 1
  • Michael Neely
    • 1
  • David Boles
    • 1
  1. 1.Department of Computer SciencesUniversity of Texas at AustinAustinUSA

Personalised recommendations