ShareJIT: JIT code cache sharing across processes and its practical implementation
Just-in-time (JIT) compilation coupled with code caching are widely used to improve performance in dynamic programming language implementations. These code caches, along with the associated profiling data for the hot code, however, consume significant amounts of memory. Furthermore, they incur extra...
Uloženo v:
| Vydáno v: | Proceedings of ACM on programming languages Ročník 2; číslo OOPSLA; s. 1 - 23 |
|---|---|
| Hlavní autoři: | , , , , |
| Médium: | Journal Article |
| Jazyk: | angličtina |
| Vydáno: |
01.11.2018
|
| ISSN: | 2475-1421, 2475-1421 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Abstract | Just-in-time (JIT) compilation coupled with code caching are widely used to improve performance in dynamic programming language implementations. These code caches, along with the associated profiling data for the hot code, however, consume significant amounts of memory. Furthermore, they incur extra JIT compilation time for their creation. On Android, the current standard JIT compiler and its code caches are not shared among processes—that is, the runtime system maintains a private code cache, and its associated data, for each runtime process. However, applications running on the same platform tend to share multiple libraries in common. Sharing cached code across multiple applications and multiple processes can lead to a reduction in memory use. It can directly reduce compile time. It can also reduce the cumulative amount of time spent interpreting code. All three of these effects can improve actual runtime performance.
In this paper, we describe ShareJIT, a global code cache for JITs that can share code across multiple applications and multiple processes. We implemented ShareJIT in the context of the Android Runtime (ART), a widely used, state-of-the-art system. To increase sharing, our implementation constrains the amount of context that the JIT compiler can use to optimize the code. This exposes a fundamental tradeoff: increased specialization to a single process’ context decreases the extent to which the compiled code can be shared. In ShareJIT, we limit some optimization to increase shareability. To evaluate the ShareJIT, we tested 8 popular Android apps in a total of 30 experiments. ShareJIT improved overall performance by 9% on average, while decreasing memory consumption by 16% on average and JIT compilation time by 37% on average. |
|---|---|
| AbstractList | Just-in-time (JIT) compilation coupled with code caching are widely used to improve performance in dynamic programming language implementations. These code caches, along with the associated profiling data for the hot code, however, consume significant amounts of memory. Furthermore, they incur extra JIT compilation time for their creation. On Android, the current standard JIT compiler and its code caches are not shared among processes—that is, the runtime system maintains a private code cache, and its associated data, for each runtime process. However, applications running on the same platform tend to share multiple libraries in common. Sharing cached code across multiple applications and multiple processes can lead to a reduction in memory use. It can directly reduce compile time. It can also reduce the cumulative amount of time spent interpreting code. All three of these effects can improve actual runtime performance.
In this paper, we describe ShareJIT, a global code cache for JITs that can share code across multiple applications and multiple processes. We implemented ShareJIT in the context of the Android Runtime (ART), a widely used, state-of-the-art system. To increase sharing, our implementation constrains the amount of context that the JIT compiler can use to optimize the code. This exposes a fundamental tradeoff: increased specialization to a single process’ context decreases the extent to which the compiled code can be shared. In ShareJIT, we limit some optimization to increase shareability. To evaluate the ShareJIT, we tested 8 popular Android apps in a total of 30 experiments. ShareJIT improved overall performance by 9% on average, while decreasing memory consumption by 16% on average and JIT compilation time by 37% on average. |
| Author | Ye, Handong Cooper, Keith Brock, Jacob Zhang, Yan Xu, Xiaoran |
| Author_xml | – sequence: 1 givenname: Xiaoran surname: Xu fullname: Xu, Xiaoran organization: Rice University, USA – sequence: 2 givenname: Keith surname: Cooper fullname: Cooper, Keith organization: Rice University, USA – sequence: 3 givenname: Jacob surname: Brock fullname: Brock, Jacob organization: University of Rochester, USA – sequence: 4 givenname: Yan surname: Zhang fullname: Zhang, Yan organization: Futurewei Technologies, USA – sequence: 5 givenname: Handong surname: Ye fullname: Ye, Handong organization: Futurewei Technologies, USA |
| BookMark | eNplkM1LAzEQxYNUsNbiv5Cbp9Ukm80m3qT4USkIWs_LdHZiI_tFshf_e1vbg-hl3jDz4_F452zS9R0xdinFtZS6uMlVabTTJ2yqdFlkUis5-bWfsXlKn0II6XJtczdlr29biPS8XN_y3eDY18QRcEs87R6h--CAsU-JD7FHSokSh67mYdxfAMeA0PDQDg211I0whr67YKcemkTzo87Y-8P9evGUrV4el4u7VYZKOJtpIGWNF2IDG1N4a5yojfWODKpSaifRki2Fc8pYqP2mRIeeSORYekNFkc9YdvD9CRjJVxgOCcYIoamkqPadVMdOdvzVH36IoYX49Y_8BrBUYbQ |
| CitedBy_id | crossref_primary_10_1145_3622839 crossref_primary_10_1145_3720418 crossref_primary_10_1109_ACCESS_2022_3181373 |
| Cites_doi | 10.5555/2190025.2190071 10.1145/800017.800542 10.1145/1254810.1254812 10.1145/3178372.3179523 10.1145/2873587.2873596 10.1007/11531142_5 10.5555/646159.758681 10.1147/sj.391.0175 10.5555/1251229.1251252 10.1109/COMPSYM.2010.5685462 10.5555/838237.838454 10.1109/PACRIM.2017.8121911 10.1145/1346256.1346265 10.5555/646149.679193 10.1145/1369396.1370017 10.1147/sj.391.0194 10.1145/2442776.2442785 |
| ContentType | Journal Article |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3276494 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 23 |
| ExternalDocumentID | 10_1145_3276494 |
| GroupedDBID | AAKMM AAYFX AAYXX ACM AEFXT AEJOY AIKLT AKRVB ALMA_UNASSIGNED_HOLDINGS CITATION EBS GUFHI LHSKQ M~E OK1 ROL |
| ID | FETCH-LOGICAL-c2098-4ae286f00bab65f8690d68f9e6c271491c8e87099268adfb7c9cfee03c7f6e553 |
| ISSN | 2475-1421 |
| IngestDate | Sat Nov 29 07:50:05 EST 2025 Tue Nov 18 21:22:48 EST 2025 |
| IsDoiOpenAccess | false |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | OOPSLA |
| Language | English |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-c2098-4ae286f00bab65f8690d68f9e6c271491c8e87099268adfb7c9cfee03c7f6e553 |
| OpenAccessLink | https://dl.acm.org/doi/pdf/10.1145/3276494 |
| PageCount | 23 |
| ParticipantIDs | crossref_citationtrail_10_1145_3276494 crossref_primary_10_1145_3276494 |
| PublicationCentury | 2000 |
| PublicationDate | 2018-11-01 |
| PublicationDateYYYYMMDD | 2018-11-01 |
| PublicationDate_xml | – month: 11 year: 2018 text: 2018-11-01 day: 01 |
| PublicationDecade | 2010 |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationYear | 2018 |
| References | e_1_2_2_4_1 e_1_2_2_25_1 e_1_2_2_5_1 e_1_2_2_24_1 e_1_2_2_6_1 e_1_2_2_23_1 e_1_2_2_7_1 e_1_2_2_22_1 e_1_2_2_21_1 e_1_2_2_1_1 e_1_2_2_20_1 Landau Erez (e_1_2_2_27_1) 2011; 7 e_1_2_2_3_1 Guckert Lauren (e_1_2_2_19_1) 2013 Schmidt Oliver (e_1_2_2_30_1) 2008; 7 e_1_2_2_9_1 e_1_2_2_28_1 Wintergerst Michael (e_1_2_2_33_1) 2008; 7 Berry Robert F (e_1_2_2_2_1) 2004; 6 Kuck Norbert (e_1_2_2_26_1) 2009; 7 e_1_2_2_14_1 e_1_2_2_13_1 e_1_2_2_12_1 e_1_2_2_11_1 e_1_2_2_10_1 e_1_2_2_31_1 e_1_2_2_32_1 e_1_2_2_18_1 e_1_2_2_17_1 e_1_2_2_34_1 e_1_2_2_16_1 e_1_2_2_35_1 e_1_2_2_15_1 Paleczny Michael (e_1_2_2_29_1) 2001; 1 Czajkowski Grzegorz (e_1_2_2_8_1) 2003 |
| References_xml | – ident: e_1_2_2_23_1 doi: 10.5555/2190025.2190071 – ident: e_1_2_2_32_1 – ident: e_1_2_2_12_1 – volume: 1 volume-title: Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - year: 2001 ident: e_1_2_2_29_1 – volume: 6 start-page: 738 year: 2004 ident: e_1_2_2_2_1 article-title: Class sharing between multiple virtual machines. (May 18 2004) publication-title: US Patent – volume: 7 start-page: 614 year: 2009 ident: e_1_2_2_26_1 article-title: Sharing classes and class loaders. (Nov. 3 2009) publication-title: US Patent – ident: e_1_2_2_10_1 doi: 10.1145/800017.800542 – ident: e_1_2_2_24_1 doi: 10.1145/1254810.1254812 – ident: e_1_2_2_4_1 doi: 10.1145/3178372.3179523 – ident: e_1_2_2_35_1 doi: 10.1145/2873587.2873596 – ident: e_1_2_2_15_1 – volume-title: USENIX Annual Technical Conference, General Track. 85–98 year: 2003 ident: e_1_2_2_8_1 – ident: e_1_2_2_9_1 doi: 10.1007/11531142_5 – ident: e_1_2_2_18_1 – volume: 7 start-page: 882 year: 2011 ident: e_1_2_2_27_1 article-title: Shared JAVA jar files. (Feb. 1 2011) publication-title: US Patent – ident: e_1_2_2_28_1 – ident: e_1_2_2_7_1 doi: 10.5555/646159.758681 – ident: e_1_2_2_31_1 doi: 10.1147/sj.391.0175 – ident: e_1_2_2_1_1 doi: 10.5555/1251229.1251252 – ident: e_1_2_2_21_1 doi: 10.1109/COMPSYM.2010.5685462 – ident: e_1_2_2_34_1 doi: 10.5555/838237.838454 – ident: e_1_2_2_3_1 doi: 10.1109/PACRIM.2017.8121911 – ident: e_1_2_2_5_1 doi: 10.1145/1346256.1346265 – ident: e_1_2_2_17_1 – ident: e_1_2_2_14_1 – volume: 7 start-page: 418 year: 2008 ident: e_1_2_2_33_1 article-title: Centralized cache storage for runtime systems. (Aug. 26 2008) publication-title: US Patent – ident: e_1_2_2_20_1 doi: 10.5555/646149.679193 – ident: e_1_2_2_22_1 – volume: 7 start-page: 415 year: 2008 ident: e_1_2_2_30_1 article-title: Sharing objects in runtime systems. (Aug. 19 2008) publication-title: US Patent – ident: e_1_2_2_13_1 – volume-title: Workshop on AMAS-BT. year: 2013 ident: e_1_2_2_19_1 – ident: e_1_2_2_25_1 doi: 10.1145/1369396.1370017 – ident: e_1_2_2_11_1 doi: 10.1147/sj.391.0194 – ident: e_1_2_2_16_1 – ident: e_1_2_2_6_1 doi: 10.1145/2442776.2442785 |
| SSID | ssj0001934839 |
| Score | 2.1348248 |
| Snippet | Just-in-time (JIT) compilation coupled with code caching are widely used to improve performance in dynamic programming language implementations. These code... |
| SourceID | crossref |
| SourceType | Enrichment Source Index Database |
| StartPage | 1 |
| Title | ShareJIT: JIT code cache sharing across processes and its practical implementation |
| Volume | 2 |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVHPJ databaseName: ROAD: Directory of Open Access Scholarly Resources customDbUrl: eissn: 2475-1421 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0001934839 issn: 2475-1421 databaseCode: M~E dateStart: 20170101 isFulltext: true titleUrlDefault: https://road.issn.org providerName: ISSN International Centre |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV1Lj9MwELbKwoELb8Tykg-ISxVoEj-5lQoEK3a3giKVUxW7Y6nSblq13dWe-BH8YjyxY7JdJODAxYkc24oyn2bsyXwzhLywNhdGA8-sNeAPKFJkxgDLDLdQujkHxaqm2IQ8OlLTqR73ej9aLsz5iaxrdXGhV_9V1L7PCxups_8g7rSo7_D3Xui-9WL37V8JHlMww8HHCZ71_aWPpPW-xbzN_Y1_1JASG9vYXwWSAGzSH4TImcJEHKdtYHmSXNzCjpPJa6JAhqND_OEQ47xOcfnWB5q269MzlOR0UXm8JTCOlstVjOiAxTZ5pd-uo4Y-8LraXPFrf4sLREdFriJjL-mzgkme5SwQol_Bb_qiQi46uDs-Hn_5NOxo2LxjqgNT-aoRYJgvoyykYKGA8uU02zvmLwUlBoo2n8WJ18j1QnKNYYKH3zt-O10y1RSoS-8euNg493Wc29nkdHYrkzvkVjxm0GGAx13Sg_oeud2W8KBRo98nn1u0vKG-oYgV2mCFRqzQgBWasEI9VqjHCk1YoZex8oB8ff9uMvqQxTIbmS0wmyyroFDCDQamMoI7LFE2F8ppELaQ_gCdWwVeq2tdCFXNnZFWWwcwKK10AjgvH5K9elnDI0IrhQ4yBlJqw8xcGGe5Q6pBrivNK7lPXrbfZWZjDnoshXIy2_n4-4SmgauQdmV3yOM_D3lCbv4C4lOyt12fwTNyw55vF5v180auPwHlT3YW |
| linkProvider | ISSN International Centre |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=ShareJIT%3A+JIT+code+cache+sharing+across+processes+and+its+practical+implementation&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Xu%2C+Xiaoran&rft.au=Cooper%2C+Keith&rft.au=Brock%2C+Jacob&rft.au=Zhang%2C+Yan&rft.date=2018-11-01&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=2&rft.issue=OOPSLA&rft.spage=1&rft.epage=23&rft_id=info:doi/10.1145%2F3276494&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3276494 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon |