Architecture of the PEVM: A High-Performance Orthogonally Persistent Java Virtual Machine

This paper describes the design and implementation of the PEVM, a new scalable, high-performance implementation of orthogonal persistence for the Java[tm] platform (OPJ). The PEVM is based on the Sun Microsystems Laboratories Virtual Machine for Research (ResearchVM), which features an optimizing Just-In-Time compiler, exact generational garbage collection, and fast thread synchronization. It also uses a new, scalable persistent object store designed to manage more than 80GB of objects. The PEVM is approximately ten times faster than previous OPJ implementations and can run significantly larger programs. It is faster than or comparable in performance to several commercial persistence solutions for the Java platform. Despite the PEVM's speed and scalability, its implementation is simpler than our previous OPJ implementation (e.g., just 43% of the VM source patches needed by our previous OPJ implementation). Its speed and simplicity are largely due to our pointer swizzling strategy, the ResearchVM s exact memory management, and a few simple but effective mechanisms. For example, we implement some key data structures in the Java[tm] programming language since this automatically makes them persistent.

[1]  Mario Schkolnick,et al.  A clustering algorithm for hierarchical structures , 1977, TODS.

[2]  Malcolm P. Atkinson,et al.  PS-algol: an algol with a persistent heap , 1982, SIGP.

[3]  Glenn Krasner,et al.  Smalltalk-80: bits of history, words of advice , 1983 .

[4]  Richard C. H. Connor,et al.  The Napier Type System , 1989, POS.

[5]  Antony L. Hosking,et al.  Protection traps and alternatives for memory management of an object-oriented language , 1994, SOSP '93.

[6]  David J. DeWitt,et al.  The oo7 Benchmark , 1993, SIGMOD Conference.

[7]  Seth J. White Pointer Swizzling Techniques for Object-Oriented Database Systems , 1994, Technical Report / University of Wisconsin, Madison / Computer Sciences Department.

[8]  Mick J. Jordan Early Experiences with Persistent Java , 1996 .

[9]  Malcolm P. Atkinson,et al.  Main-Memory Management to support Orthogonal Persistence for Java , 1997 .

[10]  Alex Garthwaite,et al.  The GC Interface in the EVM 1 , 1998 .

[11]  Brian T. Lewis,et al.  Efficient Barriers for Persistent Object Caching in a High-Performance Java TM Virtual Machine , 1999 .

[12]  B. Lewis,et al.  Eecient Barriers for Persistent Object Caching in a High-performance Java T M Virtual Machine , 1999 .

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

[14]  David Detlefs,et al.  Inlining of Virtual Methods , 1999, ECOOP.

[15]  Y. S. Ramakrishna,et al.  An efficient meta-lock for implementing ubiquitous synchronization , 1999, OOPSLA '99.

[16]  Antony L. Hosking,et al.  PM3: An Orthogonal Persistent Systems Programming Language - Design, Implementation, Performance , 1999, VLDB.

[17]  Antonios Printezis,et al.  Management of long-running high-performance persistent object stores , 2000 .

[18]  Malcolm P. Atkinson,et al.  Scalable and Recoverable Implementation of Object Evolution for the PJama1 Platform , 2000, POS.

[19]  Malcolm P. Atkinson,et al.  Orthogonal Persistence for the Java[tm] Platform: Specification and Rationale , 2000 .

[20]  Laurent Daynès,et al.  Implementation of automated fine‐granularity locking in a persistent programming language , 2000 .

[21]  Laurent Daynès,et al.  Implementation of automated fine‐granularity locking in a persistent programming language , 2000, Softw. Pract. Exp..

[22]  Rajiv Arora,et al.  Java server performance: A case study of building efficient, scalable Jvms , 2000, IBM Syst. J..