Pert: The Application-Aware Tailoring of Java Object Persistence

Persistence is a widely used technique which allows the objects that represent the results of lengthy computations to outlive the process that creates it in order to considerably speed up subsequent program executions. We observe that conventional persistence techniques usually do not consider the application contexts of the persistence operations, where not all of the object states need to be persisted. Leveraging this observation, we have designed and implemented a framework called Pert, which first performs static program analysis to estimate the actual usage of the persisted object, given the context of its usage in the program. The Pert runtime uses the statically computed information to efficiently make tailoring decisions to prune the redundant and unused object states during the persistence operations. Our evaluation result shows that the Pert-based optimization can speed up the conventional persistence operations by 1 to 45 times. The amount of persisted data is also dramatically reduced, as the result of the application-aware tailoring.

[1]  Christof Fetzer,et al.  Automatic detection and masking of non-atomic exception handling , 2003, 2003 International Conference on Dependable Systems and Networks, 2003. Proceedings..

[2]  Rudolf Eigenmann,et al.  FALCON: a system for reliable checkpoint recovery in shared grid environments , 2009, Proceedings of the Conference on High Performance Computing Networking, Storage and Analysis.

[3]  Andreas Zeller,et al.  Yesterday, my program worked. Today, it does not. Why? , 1999, ESEC/FSE-7.

[4]  Atul Prakash,et al.  Efficient object serialization in Java , 1999, Proceedings. 19th IEEE International Conference on Distributed Computing Systems. Workshops on Electronic Commerce and Web-based Applications. Middleware.

[5]  Matthew B. Dwyer,et al.  Carving and Replaying Differential Unit Test Cases from System Test Cases , 2009, IEEE Transactions on Software Engineering.

[6]  Kai Li,et al.  Libckpt: Transparent Checkpointing under UNIX , 1995, USENIX.

[7]  Michael D. Ernst,et al.  Automatic test factoring for java , 2005, ASE '05.

[8]  William R. Cook,et al.  Automatic Prefetching by Traversal Profiling in Object Persistence Architectures , 2006, ECOOP.

[9]  Monica S. Lam,et al.  Cloning-based context-sensitive pointer alias analysis using binary decision diagrams , 2004, PLDI '04.

[10]  R. H. Myers,et al.  STAT 319 : Probability & Statistics for Engineers & Scientists Term 152 ( 1 ) Final Exam Wednesday 11 / 05 / 2016 8 : 00 – 10 : 30 AM , 2016 .

[11]  Barbara G. Ryder,et al.  Parameterized object sensitivity for points-to and side-effect analyses for Java , 2002, ISSTA '02.

[12]  William R. Cook,et al.  Interprocedural query extraction for transparent persistence , 2008, OOPSLA.

[13]  Michael Philippsen,et al.  More Efficient Object Serialization , 1999, IPPS/SPDP Workshops.

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

[15]  Ondrej Lhoták,et al.  Scaling Java Points-to Analysis Using SPARK , 2003, CC.

[16]  Mira Mezini,et al.  Taming reflection: Aiding static analysis in the presence of reflection and custom class loaders , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[17]  Yan Tang,et al.  Efficient checkpointing of java software using context-sensitive capture and replay , 2007, ESEC-FSE '07.

[18]  Alexander Aiken,et al.  Effective static race detection for Java , 2006, PLDI '06.

[19]  Deepak Kapur,et al.  Efficient Context-Sensitive Shape Analysis with Graph Based Heap Models , 2008, CC.

[20]  Michael D. Bond,et al.  Probabilistic calling context , 2007, OOPSLA.