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...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:Proceedings of ACM on programming languages Ročník 2; číslo OOPSLA; s. 1 - 23
Hlavní autoři: Xu, Xiaoran, Cooper, Keith, Brock, Jacob, Zhang, Yan, Ye, Handong
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