{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,8]],"date-time":"2025-10-08T16:39:48Z","timestamp":1759941588744,"version":"3.41.0"},"reference-count":29,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","license":[{"start":{"date-parts":[[2022,10,31]],"date-time":"2022-10-31T00:00:00Z","timestamp":1667174400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2022,10,31]]},"abstract":"<jats:p>Garbage-collected language runtimes carefully tune heap limits to reduce garbage collection time and memory usage. However, there's a trade-off: a lower heap limit reduces memory use but increases garbage collection time. Classic methods for setting heap limits include manually tuned heap limits and multiple-of-live-size rules of thumb, but it is not clear when one rule is better than another or how to compare them.<\/jats:p>\n          <jats:p>We address this problem with a new framework where heap limits are set for multiple heaps at once. Our key insight is that every heap limit rule induces a particular allocation of memory across multiple processes, and this allocation can be sub-optimal. We use our framework to derive an optimal \"square-root\" heap limit rule, which minimizes total memory usage for any amount of total garbage collection time. Paradoxically, the square-root heap limit rule achieves this coordination without communication: it allocates memory optimally across multiple heaps without requiring any communication between those heaps.<\/jats:p>\n          <jats:p>To demonstrate that this heap limit rule is effective, we prototype it for V8, the JavaScript runtime used in Google Chrome, Microsoft Edge, and other browsers, as well as in server-side frameworks like node.js and Deno. On real-world web pages, our prototype achieves reductions of approximately 16.0% of memory usage while keeping garbage collection time constant. On memory-intensive benchmarks, reductions of up to 30.0% of garbage collection time are possible with no change in total memory usage.<\/jats:p>","DOI":"10.1145\/3563323","type":"journal-article","created":{"date-parts":[[2022,10,31]],"date-time":"2022-10-31T20:23:35Z","timestamp":1667247815000},"page":"986-1006","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Optimal heap limits for reducing browser memory use"],"prefix":"10.1145","volume":"6","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-3418-4835","authenticated-orcid":false,"given":"Marisa","family":"Kirisame","sequence":"first","affiliation":[{"name":"University of Utah, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4365-5192","authenticated-orcid":false,"given":"Pranav","family":"Shenoy","sequence":"additional","affiliation":[{"name":"University of Utah, USA"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-2621-3592","authenticated-orcid":false,"given":"Pavel","family":"Panchekha","sequence":"additional","affiliation":[{"name":"University of Utah, USA"}]}],"member":"320","published-online":{"date-parts":[[2022,10,31]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/SP46214.2022.9833711"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2661088.2661089"},{"key":"e_1_2_1_3_1","unstructured":"Mythri Alle Dan Elphick and Ross McIlroy. 2019. A Lighter V8. https:\/\/v8.dev\/blog\/v8-lite \t\t\t\t  Mythri Alle Dan Elphick and Ross McIlroy. 2019. A Lighter V8. https:\/\/v8.dev\/blog\/v8-lite"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/98457.98753"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133876"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1152649.1152652"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/143103.143143"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2887746.2754180"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/2980983.2908106"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276521"},{"key":"e_1_2_1_11_1","unstructured":"Ulan Degenbaev Michael Lippautz and Hannes Payer. 2018. Concurrent marking in V8. https:\/\/v8.dev\/blog\/concurrent-marking \t\t\t\t  Ulan Degenbaev Michael Lippautz and Hannes Payer. 2018. Concurrent marking in V8. https:\/\/v8.dev\/blog\/concurrent-marking"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3315573.3329978"},{"key":"e_1_2_1_13_1","unstructured":"Matthew Flatt. 2022. cs: experiment with a revised major-GC trigger. https:\/\/github.com\/racket\/racket\/commit\/157b1f30a1501d53d310cbe0d9bb999a81c689e7 \t\t\t\t  Matthew Flatt. 2022. cs: experiment with a revised major-GC trigger. https:\/\/github.com\/racket\/racket\/commit\/157b1f30a1501d53d310cbe0d9bb999a81c689e7"},{"key":"e_1_2_1_14_1","volume-title":"Reference: Racket","author":"Flatt Matthew","year":"2010","unstructured":"Matthew Flatt and PLT. 2010 . Reference: Racket . PLT Design Inc .. https:\/\/racket-lang.org\/tr1\/ Matthew Flatt and PLT. 2010. Reference: Racket. PLT Design Inc.. https:\/\/racket-lang.org\/tr1\/"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1103845.1094836"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/1065010.1065028"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993478.1993487"},{"volume-title":"The Garbage Collection Handbook (1 ed.)","author":"Jones Richard","key":"e_1_2_1_18_1","unstructured":"Richard Jones , Antony Hosking , and Eliot Moss . 2012. The Garbage Collection Handbook (1 ed.) . Chapman and Haii\/CRC , Taylor and Francis Group, 6000 Broken Sound Parkway NW, Suite 300 Boca Raton, FL 33487-2742. Richard Jones, Antony Hosking, and Eliot Moss. 2012. The Garbage Collection Handbook (1 ed.). Chapman and Haii\/CRC, Taylor and Francis Group, 6000 Broken Sound Parkway NW, Suite 300 Boca Raton, FL 33487-2742."},{"key":"e_1_2_1_19_1","volume-title":"Dynamic Tensor Rematerialization. In International Conference on Learning Representations. 31 pages. https:\/\/doi.org\/10","author":"Kirisame Marisa","year":"2021","unstructured":"Marisa Kirisame , Steven Lyubomirsky , Altan Haan , Jennifer Brennan , Mike He , Jared Roesch , Tianqi Chen , and Zachary Tatlock . 2021 . Dynamic Tensor Rematerialization. In International Conference on Learning Representations. 31 pages. https:\/\/doi.org\/10 .48550\/ARXIV.2006.09616 10.48550\/ARXIV.2006.09616 Marisa Kirisame, Steven Lyubomirsky, Altan Haan, Jennifer Brennan, Mike He, Jared Roesch, Tianqi Chen, and Zachary Tatlock. 2021. Dynamic Tensor Rematerialization. In International Conference on Learning Representations. 31 pages. https:\/\/doi.org\/10.48550\/ARXIV.2006.09616"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3447786.3456256"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/367177.367199"},{"key":"e_1_2_1_22_1","unstructured":"Mozilla. 2020. Are We Slim Yet. http:\/\/udn.realityripple.com\/docs\/Mozilla\/Performance\/AWSY \t\t\t\t  Mozilla. 2020. Are We Slim Yet. http:\/\/udn.realityripple.com\/docs\/Mozilla\/Performance\/AWSY"},{"key":"e_1_2_1_23_1","unstructured":"Mozilla. 2022. FireFox MemBalancer. https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1770763 \t\t\t\t  Mozilla. 2022. FireFox MemBalancer. https:\/\/bugzilla.mozilla.org\/show_bug.cgi?id=1770763"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984028"},{"key":"e_1_2_1_25_1","unstructured":"Oracle. 2015. Java Platform Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide. https:\/\/docs.oracle.com\/javase\/8\/docs\/technotes\/guides\/vm\/gctuning\/ \t\t\t\t  Oracle. 2015. Java Platform Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide. https:\/\/docs.oracle.com\/javase\/8\/docs\/technotes\/guides\/vm\/gctuning\/"},{"key":"e_1_2_1_26_1","unstructured":"Xinli Shang. 2020. Tricks of the trade: Tuning JVM memory for large-scale services. https:\/\/eng.uber.com\/jvm-tuning-garbage-collection\/ \t\t\t\t  Xinli Shang. 2020. Tricks of the trade: Tuning JVM memory for large-scale services. https:\/\/eng.uber.com\/jvm-tuning-garbage-collection\/"},{"key":"e_1_2_1_27_1","unstructured":"Ayush Vij. 2022. Reduce chrome memory usage and make it use less Ram. https:\/\/www.thewindowsclub.com\/reduce-chrome-memory-usage-make-it-use-less-ram \t\t\t\t  Ayush Vij. 2022. Reduce chrome memory usage and make it use less Ram. https:\/\/www.thewindowsclub.com\/reduce-chrome-memory-usage-make-it-use-less-ram"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1029873.1029881"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133956.1133979"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3563323","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3563323","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3563323","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T16:38:10Z","timestamp":1750178290000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3563323"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,10,31]]},"references-count":29,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2022,10,31]]}},"alternative-id":["10.1145\/3563323"],"URL":"https:\/\/doi.org\/10.1145\/3563323","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2022,10,31]]},"assertion":[{"value":"2022-10-31","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}