{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,12]],"date-time":"2026-04-12T17:10:22Z","timestamp":1776013822302,"version":"3.50.1"},"reference-count":76,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2019,10,10]],"date-time":"2019-10-10T00:00:00Z","timestamp":1570665600000},"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":[[2019,10,10]]},"abstract":"<jats:p>Arbitrary program extension at run time in language-based VMs, e.g., Java's dynamic class loading, comes at a startup cost: high memory footprint and slow warmup. Cloud computing amplifies the startup overhead. Microservices and serverless cloud functions lead to small, self-contained applications that are started often. Slow startup and high memory footprint directly affect the cloud hosting costs, and slow startup can also break service-level agreements. Many applications are limited to a prescribed set of pre-tested classes, i.e., use a closed-world assumption at deployment time. For such Java applications, GraalVM Native Image offers fast startup and stable performance.<\/jats:p>\n          <jats:p>GraalVM Native Image uses a novel iterative application of points-to analysis and heap snapshotting, followed by ahead-of-time compilation with an optimizing compiler. Initialization code can run at build time, i.e., executables can be tailored to a particular application configuration. Execution at run time starts with a pre-populated heap, leveraging copy-on-write memory sharing. We show that this approach improves the startup performance by up to two orders of magnitude compared to the Java HotSpot VM, while preserving peak performance. This allows Java applications to have a better startup performance than Go applications and the V8 JavaScript VM.<\/jats:p>","DOI":"10.1145\/3360610","type":"journal-article","created":{"date-parts":[[2019,10,11]],"date-time":"2019-10-11T14:53:33Z","timestamp":1570805613000},"page":"1-29","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":64,"title":["Initialize once, start fast: application initialization at build time"],"prefix":"10.1145","volume":"3","author":[{"given":"Christian","family":"Wimmer","sequence":"first","affiliation":[{"name":"Oracle Labs, USA"}]},{"given":"Codrut","family":"Stancu","sequence":"additional","affiliation":[{"name":"Oracle Labs, USA"}]},{"given":"Peter","family":"Hofer","sequence":"additional","affiliation":[{"name":"Oracle Labs, Austria"}]},{"given":"Vojin","family":"Jovanovic","sequence":"additional","affiliation":[{"name":"Oracle Labs, Switzerland"}]},{"given":"Paul","family":"W\u00f6gerer","sequence":"additional","affiliation":[{"name":"Oracle Labs, Austria"}]},{"given":"Peter B.","family":"Kessler","sequence":"additional","affiliation":[{"name":"Oracle Labs, USA"}]},{"given":"Oleg","family":"Pliss","sequence":"additional","affiliation":[{"name":"Oracle Labs, USA"}]},{"given":"Thomas","family":"W\u00fcrthinger","sequence":"additional","affiliation":[{"name":"Oracle Labs, Switzerland"}]}],"member":"320","published-online":{"date-parts":[[2019,10,10]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/191080.191135"},{"key":"e_1_2_2_2_1","volume-title":"Proceedings of the USENIX Annual Technical Conference. USENIX Association, 923\u2013935","author":"Akkus Istemi Ekin","year":"2018","unstructured":"Istemi Ekin Akkus , Ruichuan Chen , Ivica Rimac , Manuel Stein , Klaus Satzke , Andre Beck , Paarijaat Aditya , and Volker Hilt . 2018 . SAND: Towards high-performance serverless computing . In Proceedings of the USENIX Annual Technical Conference. USENIX Association, 923\u2013935 . Istemi Ekin Akkus, Ruichuan Chen, Ivica Rimac, Manuel Stein, Klaus Satzke, Andre Beck, Paarijaat Aditya, and Volker Hilt. 2018. SAND: Towards high-performance serverless computing. In Proceedings of the USENIX Annual Technical Conference. USENIX Association, 923\u2013935."},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320418"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.442.0399"},{"key":"e_1_2_2_5_1","unstructured":"Amazon Web Services Inc. 2019. AWS Lambda. https:\/\/aws.amazon.com\/lambda\/  Amazon Web Services Inc. 2019. AWS Lambda. https:\/\/aws.amazon.com\/lambda\/"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1324969.1324974"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-13651-1_2"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133876"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2018.17"},{"key":"e_1_2_2_10_1","unstructured":"D.G. Bobrow D.L. Murphy and W. Teitelman (Eds.). 1969. The BBN Lisp System Reference Manual.  D.G. Bobrow D.L. Murphy and W. Teitelman (Eds.). 1969. The BBN Lisp System Reference Manual."},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985827"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2988336.2988341"},{"key":"e_1_2_2_13_1","volume-title":"Software for Data Analysis: Programming with R","author":"Chambers John M.","unstructured":"John M. Chambers . 2008. Software for Data Analysis: Programming with R . Springer Publishing Company, Inc orporated, Chapter 2.2: An Interactive Session, 13\u201319. John M. Chambers. 2008. Software for Data Analysis: Programming with R. Springer Publishing Company, Incorporated, Chapter 2.2: An Interactive Session, 13\u201319."},{"key":"e_1_2_2_14_1","unstructured":"Ben Corrie. 2006. Java Technology IBM Style: Class Sharing. https:\/\/www.ibm.com\/developerworks\/java\/library\/j-ibmjava4\/  Ben Corrie. 2006. Java Technology IBM Style: Class Sharing. https:\/\/www.ibm.com\/developerworks\/java\/library\/j-ibmjava4\/"},{"key":"e_1_2_2_15_1","unstructured":"CRIU. 2019. Checkpoint\/Restore in Userspace. https:\/\/criu.org  CRIU. 2019. Checkpoint\/Restore in Userspace. https:\/\/criu.org"},{"key":"e_1_2_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353195"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-47993-7_7"},{"key":"e_1_2_2_18_1","unstructured":"D Language Foundation. 2019. D programming language. https:\/\/dlang.org  D Language Foundation. 2019. D programming language. https:\/\/dlang.org"},{"key":"e_1_2_2_19_1","volume-title":"Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation. ACM Press, 85\u201396","author":"Dean Jeffrey","year":"1994","unstructured":"Jeffrey Dean , Craig Chambers , and David Grove . 1994 . Identifying Profitable Specialization in Object-Oriented Languages . In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation. ACM Press, 85\u201396 . Jeffrey Dean, Craig Chambers, and David Grove. 1994. Identifying Profitable Specialization in Object-Oriented Languages. In Proceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation. ACM Press, 85\u201396."},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1029873.1029879"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1774088.1774537"},{"key":"e_1_2_2_22_1","unstructured":"David Ehringer. 2010. The Dalvik Virtual Machine Architecture. http:\/\/davidehringer.com\/software\/android\/The_Dalvik_ Virtual_Machine.pdf  David Ehringer. 2010. The Dalvik Virtual Machine Architecture. http:\/\/davidehringer.com\/software\/android\/The_Dalvik_ Virtual_Machine.pdf"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1147\/rd.174.0324"},{"key":"e_1_2_2_24_1","unstructured":"FasterXML. 2019. Jackson. https:\/\/github.com\/FasterXML\/jackson  FasterXML. 2019. Jackson. https:\/\/github.com\/FasterXML\/jackson"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508293.1508305"},{"key":"e_1_2_2_26_1","unstructured":"Google. 2012. V8 JavaScript Engine. http:\/\/code.google.com\/p\/v8\/  Google. 2012. V8 JavaScript Engine. http:\/\/code.google.com\/p\/v8\/"},{"key":"e_1_2_2_27_1","unstructured":"Google. 2019a. Dart Language. https:\/\/www.dartlang.org\/  Google. 2019a. Dart Language. https:\/\/www.dartlang.org\/"},{"key":"e_1_2_2_28_1","unstructured":"Google. 2019b. Dart Snapshot. https:\/\/www.dartlang.org\/articles\/snapshots\/  Google. 2019b. Dart Snapshot. https:\/\/www.dartlang.org\/articles\/snapshots\/"},{"key":"e_1_2_2_29_1","unstructured":"Google Cloud Platform. 2019. Cloud Functions - Serverless Environment to Build and Connect Cloud Services. https: \/\/cloud.google.com\/functions\/  Google Cloud Platform. 2019. Cloud Functions - Serverless Environment to Build and Connect Cloud Services. https: \/\/cloud.google.com\/functions\/"},{"key":"e_1_2_2_30_1","unstructured":"Yang Guo. 2015. Custom startup snapshots. https:\/\/v8.dev\/blog\/custom-startup-snapshots  Yang Guo. 2015. Custom startup snapshots. https:\/\/v8.dev\/blog\/custom-startup-snapshots"},{"key":"e_1_2_2_31_1","unstructured":"Janice J. Heiss. 2005. The Multi-Tasking Virtual Machine: Building a Highly Scalable JVM. https:\/\/www.oracle.com\/ technetwork\/articles\/java\/mvm-141094.html  Janice J. Heiss. 2005. The Multi-Tasking Virtual Machine: Building a Highly Scalable JVM. https:\/\/www.oracle.com\/ technetwork\/articles\/java\/mvm-141094.html"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/379605.379665"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/143095.143114"},{"key":"e_1_2_2_34_1","unstructured":"IBM. 2019. Cloud Functions. https:\/\/www.ibm.com\/cloud\/functions  IBM. 2019. Cloud Functions. https:\/\/www.ibm.com\/cloud\/functions"},{"key":"e_1_2_2_35_1","first-page":"9","article-title":"The Evolution of the Smalltalk Virtual Machine. In Smalltalk-80: Bits of History, Words of Advice, Glenn Krasner (Ed.). Addison-Wesley Longman Publishing Co., Inc","volume":"2","author":"Ingalls Daniel H. H.","year":"1983","unstructured":"Daniel H. H. Ingalls . 1983 . The Evolution of the Smalltalk Virtual Machine. In Smalltalk-80: Bits of History, Words of Advice, Glenn Krasner (Ed.). Addison-Wesley Longman Publishing Co., Inc ., Chapter 2 , 9 \u2013 28 . Daniel H. H. Ingalls. 1983. The Evolution of the Smalltalk Virtual Machine. In Smalltalk-80: Bits of History, Words of Advice, Glenn Krasner (Ed.). Addison-Wesley Longman Publishing Co., Inc., Chapter 2, 9\u201328.","journal-title":"Chapter"},{"key":"e_1_2_2_36_1","unstructured":"International Organization for Standards. 2017. ISO\/IEC 14882:2017 Information technology \u2014 Programming languages \u2014 C++. International Organization for Standardization.  International Organization for Standards. 2017. ISO\/IEC 14882:2017 Information technology \u2014 Programming languages \u2014 C++. International Organization for Standardization."},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1254810.1254812"},{"key":"e_1_2_2_38_1","unstructured":"Stefan Koch. 2017. The New CTFE Engine. https:\/\/dlang.org\/blog\/2017\/04\/10\/the-new-ctfe-engine\/  Stefan Koch. 2017. The New CTFE Engine. https:\/\/dlang.org\/blog\/2017\/04\/10\/the-new-ctfe-engine\/"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2017.53"},{"key":"e_1_2_2_40_1","volume-title":"Warm-up Your JVM: Understand and Eliminate JVM Warm-up Overhead in Data-Parallel Systems. In USENIX Symposium on Operating Systems Design and Implementation . USENIX Association, 383\u2013400","author":"Lion David","year":"2016","unstructured":"David Lion , Adrian Chiu , Hailong Sun , Xin Zhuang , Nikola Grcevski , and Ding Yuan . 2016 . Don\u2019t Get Caught in the Cold , Warm-up Your JVM: Understand and Eliminate JVM Warm-up Overhead in Data-Parallel Systems. In USENIX Symposium on Operating Systems Design and Implementation . USENIX Association, 383\u2013400 . David Lion, Adrian Chiu, Hailong Sun, Xin Zhuang, Nikola Grcevski, and Ding Yuan. 2016. Don\u2019t Get Caught in the Cold, Warm-up Your JVM: Understand and Eliminate JVM Warm-up Overhead in Data-Parallel Systems. In USENIX Symposium on Operating Systems Design and Implementation . USENIX Association, 383\u2013400."},{"key":"e_1_2_2_41_1","volume-title":"Partial Evaluation of an Object-Oriented Imperative Language. Master\u2019s thesis. DIKU","author":"Marquard Morten","unstructured":"Morten Marquard and Bjarne Steensgaard . 1992. Partial Evaluation of an Object-Oriented Imperative Language. Master\u2019s thesis. DIKU , University of Copenhagen. Morten Marquard and Bjarne Steensgaard. 1992. Partial Evaluation of an Object-Oriented Imperative Language. Master\u2019s thesis. DIKU, University of Copenhagen."},{"key":"e_1_2_2_42_1","doi-asserted-by":"publisher","DOI":"10.1007\/11599555_9"},{"key":"e_1_2_2_43_1","unstructured":"Microsoft Azure. 2019. Azure Functions Serverless Architecture. https:\/\/azure.microsoft.com\/en-us\/services\/functions\/  Microsoft Azure. 2019. Azure Functions Serverless Architecture. https:\/\/azure.microsoft.com\/en-us\/services\/functions\/"},{"key":"e_1_2_2_44_1","unstructured":"Object Computing. 2019. Micronaut. http:\/\/micronaut.io  Object Computing. 2019. Micronaut. http:\/\/micronaut.io"},{"key":"e_1_2_2_45_1","unstructured":"Oracle. 2019a. GraalVM. https:\/\/www.graalvm.org\/  Oracle. 2019a. GraalVM. https:\/\/www.graalvm.org\/"},{"key":"e_1_2_2_46_1","unstructured":"Oracle. 2019b. Helidon. http:\/\/helidon.io  Oracle. 2019b. Helidon. http:\/\/helidon.io"},{"key":"e_1_2_2_47_1","unstructured":"Perf Wiki. 2019. perf: Linux profiling with performance counters. https:\/\/perf.wiki.kernel.org\/index.php\/Main_Page  Perf Wiki. 2019. perf: Linux profiling with performance counters. https:\/\/perf.wiki.kernel.org\/index.php\/Main_Page"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/3237009.3237014"},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2019.8661171"},{"key":"e_1_2_2_50_1","volume-title":"R: A Language and Environment for Statistical Computing","author":"Team R Core","year":"2019","unstructured":"R Core Team . 2019 . R: A Language and Environment for Statistical Computing . R Foundation for Statistical Computing , Vienna, Austria . http:\/\/www.R-project.org\/ R Core Team. 2019. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria. http:\/\/www.R-project.org\/"},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/36206.36181"},{"key":"e_1_2_2_52_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0167-6423(02)00059-X"},{"key":"e_1_2_2_53_1","unstructured":"RedHat. 2019. Quarkus. http:\/\/quarkus.io  RedHat. 2019. Quarkus. http:\/\/quarkus.io"},{"key":"e_1_2_2_54_1","volume-title":"The Strength of Metacircular Virtual Machines: Jikes RVM","author":"Rogers Ian","unstructured":"Ian Rogers and Dave Grove . 2009. The Strength of Metacircular Virtual Machines: Jikes RVM . In Beautiful Architecture, Diomidis Spinellis and Georgios Gousios (Eds.). O\u2019Reilly , Chapter 10. Ian Rogers and Dave Grove. 2009. The Strength of Metacircular Virtual Machines: Jikes RVM. In Beautiful Architecture, Diomidis Spinellis and Georgios Gousios (Eds.). O\u2019Reilly, Chapter 10."},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-36579-6_10"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-44978-7_11"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/778559.778561"},{"key":"e_1_2_2_58_1","unstructured":"Werner Schuster. 2011. The Essence of Google Dart: Building Applications Snapshots Isolates. https:\/\/www.infoq.com\/ articles\/google-dart\/  Werner Schuster. 2011. The Essence of Google Dart: Building Applications Snapshots Isolates. https:\/\/www.infoq.com\/ articles\/google-dart\/"},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048098"},{"key":"e_1_2_2_60_1","doi-asserted-by":"publisher","DOI":"10.1561\/2500000014"},{"key":"e_1_2_2_61_1","unstructured":"Shaun Smith. 2018. Announcing Oracle Functions. https:\/\/blogs.oracle.com\/cloud-infrastructure\/announcing-oraclefunctions  Shaun Smith. 2018. Announcing Oracle Functions. https:\/\/blogs.oracle.com\/cloud-infrastructure\/announcing-oraclefunctions"},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-36946-9"},{"key":"e_1_2_2_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/2581122.2544157"},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/154766.155373"},{"key":"e_1_2_2_65_1","unstructured":"Sun Microsystems. 2004. Class Data Sharing. https:\/\/docs.oracle.com\/javase\/1.5.0\/docs\/guide\/vm\/class-data-sharing.html  Sun Microsystems. 2004. Class Data Sharing. https:\/\/docs.oracle.com\/javase\/1.5.0\/docs\/guide\/vm\/class-data-sharing.html"},{"key":"e_1_2_2_66_1","doi-asserted-by":"crossref","unstructured":"Warren Teitelman (Ed.). 1974. Interlisp Reference Manual.  Warren Teitelman (Ed.). 1974. Interlisp Reference Manual.","DOI":"10.1145\/1056786.1056787"},{"key":"e_1_2_2_67_1","unstructured":"H. S. Teoh. 2017. Compile-time vs. compile-time. https:\/\/wiki.dlang.org\/User:Quickfur\/Compile-time_vs._compile-time  H. S. Teoh. 2017. Compile-time vs. compile-time. https:\/\/wiki.dlang.org\/User:Quickfur\/Compile-time_vs._compile-time"},{"key":"e_1_2_2_68_1","unstructured":"The Apache Software Foundation. 2019. ab - Apache HTTP server benchmarking tool. https:\/\/httpd.apache.org\/docs\/2.4\/ programs\/ab.html  The Apache Software Foundation. 2019. ab - Apache HTTP server benchmarking tool. https:\/\/httpd.apache.org\/docs\/2.4\/ programs\/ab.html"},{"key":"e_1_2_2_69_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320414"},{"key":"e_1_2_2_70_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167489"},{"key":"e_1_2_2_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250775"},{"key":"e_1_2_2_72_1","doi-asserted-by":"publisher","DOI":"10.1145\/217838.217845"},{"key":"e_1_2_2_73_1","doi-asserted-by":"publisher","DOI":"10.1145\/800142.805382"},{"key":"e_1_2_2_74_1","doi-asserted-by":"publisher","DOI":"10.1145\/2400682.2400689"},{"key":"e_1_2_2_75_1","doi-asserted-by":"publisher","DOI":"10.1145\/3033019.3033025"},{"key":"e_1_2_2_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062381"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3360610","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3360610","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T23:22:59Z","timestamp":1750202579000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3360610"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,10,10]]},"references-count":76,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2019,10,10]]}},"alternative-id":["10.1145\/3360610"],"URL":"https:\/\/doi.org\/10.1145\/3360610","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2019,10,10]]},"assertion":[{"value":"2019-10-10","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}