{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:54:24Z","timestamp":1750308864674,"version":"3.41.0"},"reference-count":69,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2016,4,8]],"date-time":"2016-04-08T00:00:00Z","timestamp":1460073600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"National Science Foundation","award":["CNS-1513837, CNS-0905684, and CCF-1117162"],"award-info":[{"award-number":["CNS-1513837, CNS-0905684, and CCF-1117162"]}]},{"DOI":"10.13039\/100000185","name":"Defense Advanced Research Projects Agency","doi-asserted-by":"crossref","award":["D11PC20024 and N660001-1-2-4014"],"award-info":[{"award-number":["D11PC20024 and N660001-1-2-4014"]}],"id":[{"id":"10.13039\/100000185","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2016,5,2]]},"abstract":"<jats:p>The web browser is the \u201cnew desktop.\u201d Not only do many users spend most of their time using the browser, the browser has also become host to rich and dynamic applications that were previously tailored to each individual operating system. The lingua franca of web scripting, JavaScript, was pivotal in this development.<\/jats:p>\n          <jats:p>Imagine that all desktop applications allocated memory from a single heap managed by the operating system. To reclaim memory upon application shutdown, all processes would then be garbage collected\u2014not just the one being quit. While operating systems improved upon this approach long ago, this was how browsers managed memory until recently.<\/jats:p>\n          <jats:p>\n            This article explores\n            <jats:italic>compartmentalized<\/jats:italic>\n            memory management, an approach tailored specifically to web browsers. The idea is to partition the JavaScript heap into compartments and allocate objects to compartments based on their origin. All objects in the same compartment reference each other direct, whereas cross-origin references go through wrapper objects.\n          <\/jats:p>\n          <jats:p>We carefully evaluate our techniques using Mozilla\u2019s Firefox browser\u2014which now ships with our enhancements\u2014and demonstrate the benefits of collecting each compartment independently. This simultaneously improves runtime performance (up to 36%) and reduces garbage collection pause times (up to 75%) as well as the memory footprint of the browser. In addition, enforcing the same-origin security policy becomes simple and efficient with compartments.<\/jats:p>","DOI":"10.1145\/2866576","type":"journal-article","created":{"date-parts":[[2016,4,8]],"date-time":"2016-04-08T23:08:32Z","timestamp":1460156912000},"page":"1-37","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Thinking Inside the Box"],"prefix":"10.1145","volume":"38","author":[{"given":"Gregor","family":"Wagner","sequence":"first","affiliation":[{"name":"Mozilla Corporation, Berlin, Germany"}]},{"given":"Per","family":"Larsen","sequence":"additional","affiliation":[{"name":"University of California, Irvine, Irvine, CA"}]},{"given":"Stefan","family":"Brunthaler","sequence":"additional","affiliation":[{"name":"University of California, Irvine, Irvine, CA"}]},{"given":"Michael","family":"Franz","sequence":"additional","affiliation":[{"name":"University of California, Irvine, Irvine, CA"}]}],"member":"320","published-online":{"date-parts":[[2016,4,8]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/292469.292471"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/207110.207137"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","unstructured":"A. W. Appel. 1989. Simple generational garbage collection and fast allocation. Software\u2014Practice and Experience 19 2 171--183. DOI:http:\/\/dx.doi.org\/10.1002\/spe.4380190206 10.1002\/spe.4380190206","DOI":"10.1002\/spe.4380190206"},{"volume-title":"Retrieved","year":"2012","key":"e_1_2_2_4_1","unstructured":"Apple. 2012. The WebKit Open Source Project. (2012). Retrieved February 29, 2016 from http:\/\/www.webkit.org\/projects\/javascript\/index.html."},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806651.1806653"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/155090.155108"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/207110.207164"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/378993.379232"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/582419.582421"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/512529.512548"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/504282.504307"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/301618.301648"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/324133.324234"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380251203"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/378795.378823"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/286860.286865"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/512429.512439"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1753326.1753426"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/509593.509641"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.5555\/1267847.1267868"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542528"},{"volume-title":"Retrieved","year":"2009","key":"e_1_2_2_22_1","unstructured":"Google. 2009. Introducing Google Chrome OS. Retrieved February 29, 2016 from http:\/\/googleblog.blogspot.com\/2009\/07\/introducing-google-chrome-os.html."},{"volume-title":"Retrieved","year":"2012","key":"e_1_2_2_23_1","unstructured":"Google. 2012. Chrome V8 - Efficient Garbage Collection. (2012). Retrieved February 29, 2016 from https:\/\/developers.google.com\/v8\/design#garb_coll. Accessed 01\/31\/2013."},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/155090.155107"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1028996"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2254064.2254094"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","unstructured":"David R. Hanson. 1977. Storage management for an implementation of SNOBOL4. Software\u2014Practice and Experience 7 2 179--192. DOI:http:\/\/dx.doi.org\/10.1002\/spe.4380070206","DOI":"10.1002\/spe.4380070206"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","unstructured":"D. R. Hanson. 1990. Fast allocation and deallocation of memory based on object lifetimes. Software\u2014Practice and Experience 20 1 5--12. DOI:http:\/\/dx.doi.org\/10.1002\/spe.4380200104 10.1002\/spe.4380200104","DOI":"10.1002\/spe.4380200104"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/117954.117957"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/512429.512435"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.5555\/646149.679193"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1028976.1028983"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0017203"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380121108"},{"volume-title":"Retrieved","year":"1997","key":"e_1_2_2_35_1","unstructured":"Intel. 1997. Using the RDTSC Instruction for Performance Monitoring. Retrieved February 29, 2016 from http:\/\/www.ccsl.carleton.ca\/&sim;jamuir\/rdtscpm1.pdf."},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/286860.286864"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.5555\/2025255"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/35037.42182"},{"key":"e_1_2_2_40_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0017185"},{"key":"e_1_2_2_41_1","volume-title":"Fundamental Algorithms","author":"Knuth Donald E.","unstructured":"Donald E. Knuth. 1973. The Art of Computer Programming, Fundamental Algorithms (2nd ed.). Vol. 1. Addison Wesley, Boston, MA.","edition":"2"},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/1369396.1370017"},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/29650.29677"},{"key":"e_1_2_2_44_1","volume-title":"Retrieved","author":"Lindstr\u00f6m Jens","year":"2009","unstructured":"Jens Lindstr\u00f6m. 2009. Carakan Revisited. Retrieved February 29, 2016 from https:\/\/dev.opera.com\/blog\/carakan-revisited\/."},{"key":"e_1_2_2_45_1","volume-title":"Retrieved","author":"Foundation Linux","year":"2012","unstructured":"Linux Foundation. 2012. Tizen. Retrieved February 29, 2016 from https:\/\/www.tizen.org. Accessed 02\/01\/2013."},{"key":"e_1_2_2_46_1","volume-title":"Retrieved","author":"Miadowicz Andrew","year":"2012","unstructured":"Andrew Miadowicz. 2012. Advances in JavaScript Performance in IE10 and Windows 8. Retrieved February 29, 2016 from http:\/\/blogs.msdn.com\/b\/ie\/archive\/2012\/06\/13\/advances-in-javascript-performance-in-ie10-and-windows-8.aspx."},{"volume-title":"Retrieved","year":"2008","key":"e_1_2_2_47_1","unstructured":"Microsoft. 2008. What\u2019s New in Internet Explorer 8. Retrieved February 29, 2016 from http:\/\/msdn.microsoft.com\/en-us\/library\/cc288472.aspxhttp:\/\/msdn.microsoft.com\/en-us\/library\/cc288472spx."},{"volume-title":"Retrieved","year":"2011","key":"e_1_2_2_48_1","unstructured":"Mozilla. 2011. Kraken JavaScript Benchmark. Retrieved February 29, 2016 from http:\/\/krakenbenchmark.mozilla.org\/."},{"volume-title":"Retrieved","year":"2012","key":"e_1_2_2_49_1","unstructured":"Mozilla. 2012. Experience Firefox OS on your Android device. Retrieved February 29, 2016 from http:\/\/www.mozilla.org\/en-US\/firefoxos\/. Accessed 02\/01\/2013."},{"key":"e_1_2_2_50_1","unstructured":"Oracle. 2010. Java 2 Platform SE v.1.4.2 API Specification. https:\/\/docs.oracle.com\/javase\/1.4.2\/docs\/api\/. Accessed 01\/28\/2013."},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1519065.1519090"},{"key":"e_1_2_2_52_1","volume-title":"Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework","author":"Richter Jeffrey","year":"2000","unstructured":"Jeffrey Richter. 2000. Garbage Collection: Automatic Memory Management in the Microsoft .NET Framework. http:\/\/www.cs.inf.ethz.ch\/37-201\/files\/GC_in_NET.pdf. Accessed 01\/28\/2013."},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/363534.363546"},{"key":"e_1_2_2_54_1","volume-title":"Retrieved","author":"Rudermann J.","year":"2001","unstructured":"J. Rudermann. 2001. The Same Origin Policy. Retrieved February 29, 2016 from https:\/\/developer.mozilla.org\/En\/Same_origin_policy_for_JavaScript."},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/363534.363554"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/291069.291012"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/503272.503300"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/354880.354883"},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/1375634.1375638"},{"key":"e_1_2_2_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133956.1133965"},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-70592-5_15"},{"key":"e_1_2_2_62_1","volume-title":"Retrieved","author":"Souders Steve","year":"2013","unstructured":"Steve Souders. 2013. HTTP Archive. (2013). Retrieved February 29, 2016 from http:\/\/httparchive.org\/trends.php. Accessed 01\/10\/2013."},{"key":"e_1_2_2_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/362422.362432"},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/286860.286882"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1006\/inco.1996.2613"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/800020.808261"},{"key":"e_1_2_2_67_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1097-024X(199603)26:3&lang;357::AID-SPE15&rang;3.0"},{"key":"e_1_2_2_69_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993478.1993496"},{"key":"e_1_2_2_70_1","doi-asserted-by":"publisher","DOI":"10.5555\/645648.664824"},{"key":"e_1_2_2_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/113445.113461"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2866576","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2866576","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:15:05Z","timestamp":1750281305000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2866576"}},"subtitle":["Compartmentalized Garbage Collection"],"short-title":[],"issued":{"date-parts":[[2016,4,8]]},"references-count":69,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2016,5,2]]}},"alternative-id":["10.1145\/2866576"],"URL":"https:\/\/doi.org\/10.1145\/2866576","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"type":"print","value":"0164-0925"},{"type":"electronic","value":"1558-4593"}],"subject":[],"published":{"date-parts":[[2016,4,8]]},"assertion":[{"value":"2013-04-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2015-12-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2016-04-08","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}