We implemented orthogonal persistence for the Java platform by adding persistent object caching to a high-performance virtual machine that uses exact garbage collection, the Sun Microsystems Laboratories Virtual Machine for Research (''ResearchVM'').1 This paper gives an overview of our design for the read and write barriers needed to support persistence. The key design decision we made was the choice of a pointer swizzling strategy. Pointer swizzling speeds up programs by translating persistent addresses (references to persistent objects on disk) into normal virtual memory addresses in the object cache. The swizzling technique we chose is simple (requires few source changes to the ResearchVM) and performs well (adds acceptably low CPU overhead to the ResearchVM). Our integration of the new barriers was considerably simplified by an internal memory interface that the ResearchVM consistently uses, except in its Just-In-Time (JIT) compiler, to access program runtime values. Our new persistent version of the ResearchVM, the PEVM, requires just 30% of the changes necessary in our previous persistent virtual machine implementations. It executes programs with only modest runtime overhead (typically 10-20%) compared to an unchanged ResearchVM. 1A ResearchVM is embedded in Sun's JavaTM 2 SDK Production Release for the SolarisTM Operating Environment, available at http://www.sun.com/solaris/java/.
[1]
Alex Garthwaite,et al.
The GC Interface in the EVM 1
,
1998
.
[2]
Marvin H. Solomon,et al.
A trace-based simulation of pointer swizzling techniques
,
1995,
Proceedings of the Eleventh International Conference on Data Engineering.
[3]
Malcolm P. Atkinson,et al.
Main-Memory Management to support Orthogonal Persistence for Java
,
1997
.
[4]
David J. DeWitt,et al.
A Performance Study of Alternative Object Faulting and Pointer Swizzling Strategies
,
1992,
VLDB.
[5]
Kumar V. Vadaparty.
Pointer Swizzling at Page-Fault Time
,
1995,
J. Object Oriented Program..
[6]
Ronald Morrison,et al.
Orthogonally persistent object systems
,
1995,
The VLDB Journal.