Efficiently Adapting Java Binaries in Limited Memory Contexts

This paper presents a compilation framework that allows executable code to be shared across different Java Virtual Machine (JVM) instances. Current compliant JVMs for servers are burdened with large memory footprints (because of the size of the increasingly complicated compilers) and high startup costs, while compliant JVMs for embedded devices typically rely on interpretation. This paper describes a quasi-static approach that allows execution of a read-only version of the code, enabling compiled Java binaries to be embedded in ROM in an embedded environment or shared across multiple applications in a server environment. We have implemented this approach in the Quicksilver quasi-static compiler for the Jikes RVM (Jikes Research Virtual Machine). On the SPECjvm98 benchmark suite, our approach gives writable memory space savings of between 82–89% over that of our previous (non-sharable, non-ROMable) quasi-static approach, while delivering performance that is typically within 1–7% of that approach, and is competitive with the performance of the Jikes RVM adaptive optimization system.

[1]  Samuel P. Midkiff,et al.  A framework for efficient reuse of binary code in Java , 2001, ICS '01.

[2]  Samuel P. Midkiff,et al.  Quicksilver: a quasi-static compiler for Java , 2000, OOPSLA '00.

[3]  Rajesh Bordawekar,et al.  Building a Java virtual machine for server applications: The Jvm on OS/390 , 2000, IBM Syst. J..

[4]  Satoshi Matsuoka,et al.  OpenJIT: An Open-Ended, Reflective JIT Compiler Framework for Java , 2000, ECOOP.

[5]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[6]  Toshiaki Yasue,et al.  Overview of the IBM Java Just-in-Time Compiler , 2000, IBM Syst. J..

[7]  Erik Ruf,et al.  Marmot: an optimizing compiler for Java , 2000, Softw. Pract. Exp..

[8]  Grzegorz Czajkowski,et al.  Application isolation in the Java Virtual Machine , 2000, OOPSLA '00.

[9]  Jong-Deok Choi,et al.  Dynamic linking on a shared-memory multiprocessor , 1999, 1999 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.PR00425).

[10]  Zhong Shao,et al.  Supporting Binary Compatibility with Static Compilation , 2002, Java Virtual Machine Research and Technology Symposium.

[11]  Guy L. Steele,et al.  Java Language Specification, Second Edition: The Java Series , 2000 .

[12]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[13]  Guy L. Steele,et al.  Java(TM) Language Specification , 2005 .

[14]  Stephen J. Fink,et al.  The Jalapeño virtual machine , 2000, IBM Syst. J..

[15]  Matthew Arnold,et al.  Adaptive optimization in the Jalapeño JVM , 2000, OOPSLA '00.

[16]  James Gosling The Java Language Specification - Second Edition , 2000 .

[17]  DillenbergerD.,et al.  Building a Java virtual machine for server applications , 2000 .

[18]  Malcolm P. Atkinson,et al.  Orthogonal persistence for the java platform: draft specification , 1999 .

[19]  Vitaly Feldman,et al.  Sealed calls in Java packages , 2000, OOPSLA '00.