Efficient Barriers for Persistent Object Caching in a High-Performance Java TM Virtual Machine

1999 
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/.
    • Correction
    • Source
    • Cite
    • Save
    • Machine Reading By IdeaReader
    0
    References
    11
    Citations
    NaN
    KQI
    []