{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,6,1]],"date-time":"2026-06-01T23:19:17Z","timestamp":1780355957782,"version":"3.54.1"},"reference-count":23,"publisher":"Wiley","issue":"7","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4869,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1993,7]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Because dynamic memory management is an important part of a large class of computer programs, high\u2010performance algorithms for dynamic memory management have been, and will continue to be, of considerable interest. Experience indicates that for many programs, dynamic storage allocation is so important that programmers feel compelled to write and use their own domain\u2010specific allocators to avoid the overhead of system libraries. As an alternative to explicit storage management techniques, conservative garbage collection has been suggested as an important algorithm for dynamic storage management in C programs. In this paper, I evaluate the costs of different dynamic storage management algorithms, including domain\u2010specific allocators, widely\u2010used general\u2010purpose allocators, and a publicly available conservative garbage collection algorithm. Surprisingly, I find that programmer enhancements often have little effect on program performance. I also find that the true cost of conservative garbage collection is not the CPU overhead, but the memory system overhead of the algorithm. I conclude that conservative garbage collection is a promising alternative to explicit storage management and that the performance of conservative collection is likely to improve in the future. C programmers should now seriously consider using conservative garbage collection instead of explicitly calling free in programs they write.<\/jats:p>","DOI":"10.1002\/spe.4380230704","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T16:43:12Z","timestamp":1163781792000},"page":"733-756","source":"Crossref","is-referenced-by-count":77,"title":["The measured cost of conservative garbage collection"],"prefix":"10.1002","volume":"23","author":[{"given":"Benjamin","family":"Zorn","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","first-page":"435","volume-title":"Fundamental Algorithms, Vol. 1 of The Art of Computer Programming","author":"Knuth D. E.","year":"1973"},{"key":"e_1_2_1_3_2","doi-asserted-by":"crossref","unstructured":"C. J.Stephenson \u2018Fast fits: new methods for dynamic storage allocation\u2019 inProc. Ninth ACM Symposium on Operating System Principles Bretton Woods NH October1983 pp.30\u201332.","DOI":"10.1145\/773379.806613"},{"key":"e_1_2_1_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/358841.358852"},{"key":"e_1_2_1_5_2","unstructured":"D. G.KornandK.\u2010P.Vo \u2018In search of a better malloc\u2019 Proc. Summer 1985 USENIX Conference 1985 pp.489\u2013506."},{"key":"e_1_2_1_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/356850.356854"},{"key":"e_1_2_1_7_2","unstructured":"M.Caplinger \u2018A memory allocator with garbage collection for C\u2019 Proc. Winter 1988 USENIX Conference Dallas TX February1988 pp.325\u2013330."},{"key":"e_1_2_1_8_2","unstructured":"J.Bartlett \u2018Mostly\u2010copying garbage collection picks up generations and C++\u2019 Tech. Rep. TN\u201012 Digital Equipment Corporation Western Research Laboratory Palo Alto CA October1989."},{"key":"e_1_2_1_9_2","unstructured":"J. F.Bartlett \u2018Compacting garbage collection with ambiguous roots\u2019 Tech. Rep. 88\/2 Digital Equipment Corporation Western Research Laboratory Palo Alto CA February1988."},{"key":"e_1_2_1_10_2","doi-asserted-by":"crossref","unstructured":"H.BoehmandM.Weiser \u2018Garbage collection in an uncooperative environment\u2019 Software\u2014Practice and Experience pp.807\u2013820(1988).","DOI":"10.1002\/spe.4380180902"},{"key":"e_1_2_1_11_2","doi-asserted-by":"publisher","DOI":"10.1147\/sj.231.0044"},{"key":"e_1_2_1_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/65979.65981"},{"key":"e_1_2_1_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/3532.3536"},{"key":"e_1_2_1_14_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380201205"},{"key":"e_1_2_1_15_2","doi-asserted-by":"crossref","unstructured":"M. D.Hill \u2018Aspects of cache memory and instruction buffer performance\u2019 Ph.D. Thesis University of California at Berkeley Berkeley CA November1987. Also appears asTech. Report UCB\/CSD 87\/381.","DOI":"10.21236\/ADA604007"},{"key":"e_1_2_1_16_2","unstructured":"B.Zorn \u2018Comparative performance evaluation of garbage collection algorithms\u2019 Ph.D. Thesis.University of California at Berkeley Berkeley CA November1989. Also appears asTech. Report UCB\/CSD 89\/544."},{"key":"e_1_2_1_17_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380230804"},{"key":"e_1_2_1_18_2","unstructured":"P.Rovner \u2018On adding garbage collection and runtime types to a strongly\u2010typed statically checked concurrent language\u2019 Tech. Rep. CSL\u201084\u20107 Xerox Palo Alto Research Center Palo Alto California July1985."},{"key":"e_1_2_1_19_2","doi-asserted-by":"publisher","DOI":"10.1145\/358141.358147"},{"key":"e_1_2_1_20_2","unstructured":"B.Zorn \u2018The effect of garbage collection on cache performance\u2019 Tech. Rep. CU\u2010CS\u2010528\u201391 Department of Computer Science University of Colorado Boulder Boulder CO May1991."},{"key":"e_1_2_1_21_2","doi-asserted-by":"crossref","unstructured":"D. A.Moon \u2018Garbage collection in a large Lisp system\u2019 Conference Record of the 1984 ACM Symposium on LISP and Functional Programming Austin Texas August1984 pp.235\u2013246.","DOI":"10.1145\/800055.802040"},{"key":"e_1_2_1_22_2","doi-asserted-by":"crossref","unstructured":"D.Ungar \u2018Generation scavenging: a non\u2010disruptive high performance storage reclamation algorithm\u2019 SIGSOFT\/SIGPLAN Practical Programming Environments Conference April1984 pp.157\u2013167.","DOI":"10.1145\/390011.808261"},{"key":"e_1_2_1_23_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380190206"},{"key":"e_1_2_1_24_2","doi-asserted-by":"crossref","unstructured":"A.Demers M.Weiser B.Hayes H.Boehm D.BobrowandS.Shenker \u2018Combining generational and conservative garbage collection: framework and implementations\u2019 Conference Record of the Seventeenth ACM Symposium on Principles of Programming Languages January1990 pp.261\u2013269.","DOI":"10.1145\/96709.96735"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380230704","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380230704","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,25]],"date-time":"2023-10-25T03:41:09Z","timestamp":1698205269000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380230704"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1993,7]]},"references-count":23,"journal-issue":{"issue":"7","published-print":{"date-parts":[[1993,7]]}},"alternative-id":["10.1002\/spe.4380230704"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380230704","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1993,7]]}}}