ShareJIT: JIT Code Cache Sharing across Processes and Its Practical Implementation
Xiaoran Xu, Keith Cooper, Jacob Brock, Yan Zhang, Handong Ye

TL;DR
ShareJIT introduces a global JIT code cache for Android that enables sharing across processes, reducing memory, compilation time, and interpretation overhead, thereby improving overall performance.
Contribution
We implemented ShareJIT in Android Runtime, enabling cross-process code sharing with a tradeoff between optimization and shareability.
Findings
Performance improved by 9% on average
Memory consumption decreased by 16%
JIT compilation time reduced by 37%
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Security and Verification in Computing · Advanced Data Storage Technologies
