Main-Memory Management to support Orthogonal Persistence for Java

The main-memory management of an object cache that provides an orthogonally persistent platform for Java is described. Features of the architecture include: two levels of bu ering between the disk and virtual machine, a consistent representation of transient and active objects, an e cient residency checking algorithm in the presence of multiple threads of execution, and well developed object-cache management technology. We present some of the challenges of providing persistence for the Java virtual machine, which may be typical of any attempt at an industrial-strength orthogonally persistent programming system. Some of these might have been avoided by sacri cing persistence independence, but that is far too valuable to sacri ce. We report on some detailed investigations of pinning and cache replacement techniques applicable in this context. The information available for eviction-victim selection is inevitably limited by imprecise information about the state of the machine and the cost of collection. The question is raised whether we can do better than random eviction with real rather than synthetic loads given these limits.

[1]  R. Connor,et al.  Design Issues for Persistent Java: a type-safe, object-oriented, orthogonally persistent system , 1996 .

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

[3]  Benjamin G. Zorn,et al.  The measured cost of conservative garbage collection , 1993, Softw. Pract. Exp..

[4]  Ronald Morrison,et al.  A generic persistent object store , 1992, Softw. Eng. J..

[5]  A. L. Brown,et al.  An open system architecture for a persistent object store , 1992, Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences.

[6]  Stanley B. Zdonik,et al.  Fido: A Cache That Learns to Fetch , 1991, VLDB.

[7]  Frank Yellin,et al.  The java virtual machine , 1996 .

[8]  Manuel Fähndrich,et al.  Venari/ML Interfaces and Examples , 1993 .

[9]  Hyoung-Joo Kim,et al.  SEOF: an adaptable object prefetch policy for object-oriented database systems , 1997, Proceedings 13th International Conference on Data Engineering.

[10]  David Maier,et al.  Persistent Object Systems , 1995, Workshops in Computing.

[11]  Jay Banerjee,et al.  Integrating an object-oriented programming system with a database system , 1988, OOPSLA 1988.

[12]  David J. DeWitt,et al.  A Performance Study of Alternative Object Faulting and Pointer Swizzling Strategies , 1992, VLDB.

[13]  David S. Munro,et al.  Concurrent Shadow Paging in the Flask Architecture , 1994, POS.

[14]  Stanley B. Zdonik,et al.  A shared, segmented memory system for an object-oriented database , 1987, TOIS.

[15]  Alfons Kemper,et al.  Dual-Buffering Strategies in Object Bases , 1994, VLDB.

[16]  Andreas Reuter,et al.  Transaction Processing: Concepts and Techniques , 1992 .

[17]  Alan Dearle,et al.  Persistent Operating System Support for Java , 1996 .

[18]  Mahadev Satyanarayanan,et al.  Lightweight Recoverable Virtual Memory , 1993, SOSP.

[19]  Randy H. Katz,et al.  Exploiting inheritance and structure semantics for effective clustering and buffering in an object-oriented DBMS , 1989, SIGMOD '89.

[20]  Malcolm P. Atkinson,et al.  First International Workshop on Persistence and Java , 1996 .

[21]  T. Kaehler,et al.  LOOM: large object-oriented memory for Smalltalk-80 systems , 1989 .

[22]  Mark S. Day,et al.  Client cache management in a distributed object database , 1995 .

[23]  David J. DeWitt,et al.  Shoring up persistent applications , 1994, SIGMOD '94.

[24]  R. F. Bruynooghe,et al.  PSS: A System for Process Enactment , 1991, Proceedings. First International Conference on the Software Process,.

[25]  Scott Nettles,et al.  Transactions for Java , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[26]  Florian Matthes,et al.  An open system architecture for a persistent object store , 1992 .