Abstract
The quality of a static analysis of heap-manipulating programs is largely determined by its heap abstraction. Object allocation sites are a commonly-used abstraction, but are too coarse for some clients. The goal of this paper is to investigate how various refinements of allocation sites can improve precision. In particular, we consider abstractions that use call stack, object recency, and heap connectivity information. We measure the precision of these abstractions dynamically for four different clients motivated by concurrency and on nine Java programs chosen from the DaCapo benchmark suite. Our dynamic results shed new light on aspects of heap abstractions that matter for precision, which allows us to more effectively navigate the large space of possible heap abstractions
- }}Chord: A static and dynamic program analysis framework for Java. http://code.google.com/p/jchord/.Google Scholar
- }}J. Aldrich, C. Chambers, E. G. Sirer, and S. J. Eggers. Static analyses for eliminating unnecessary synchronization from Java programs. In Proceedings of the 6th Intl. Static Analysis Symp. (SAS), pages 19--38, 1999. Google Scholar
Digital Library
- }}J. Aldrich, E. Sirer, C. Chambers, and S. J. Eggers. Comprehensive synchronization elimination for Java. Science of Computer Programming, 47(2-3):91--120, 2003. Google Scholar
Digital Library
- }}G. Balakrishnan and T. W. Reps. Recency-abstraction for heap-allocated storage. In Proceedings of the 13th Intl. Static Analysis Symp. (SAS), pages 221--239, 2006. Google Scholar
Digital Library
- }}S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovi´c, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In Proceedings of the 21st ACM SIGPLAN Conf. on Object-Oriented Programing Systems, Languages and Applications (OOPSLA), pages 169--190, 2006. Google Scholar
Digital Library
- }}B. Blanchet. Escape analysis for Java: Theory and practice. ACM Transactions on Programming Languages and Systems, 25(6):713--775, 2003. Google Scholar
Digital Library
- }}B. Blanchet. Escape analysis for object-oriented languages: Application to Java. In Proceedings of the 14th ACM SIGPLAN Conf. on Object-Oriented Programming Systems, Languages and Applications (OOPSLA), pages 20--34, 1999. Google Scholar
Digital Library
- }}J. Bogda and U. Holzle. Removing unnecessary synchronization in Java. In Proceedings of the 14th ACM SIGPLAN Conf. on Object-Oriented Programming Systems, Languages and Applications (OOPSLA), pages 35--46, 1999. Google Scholar
Digital Library
- }}S. Chiba and M. Nishizawa. An easy-to-use toolkit for efficient Java bytecode translators. In Proceedings of the 2nd Intl. Conf. on Generative Programming and Component Engineering (GPCE), pages 364--376, 2003. Google Scholar
Digital Library
- }}J.-D. Choi, K. Lee, A. Loginov, R. O'Callahan, V. Sarkar, and M. Sridharan. Efficient and precise datarace detection for multithreaded object-oriented programs. In Proceedings of the ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI), pages 258--269, 2002. Google Scholar
Digital Library
- }}B. Dufour, B. G. Ryder, and G. Sevitsky. Blended analysis for performance understanding of framework-based applications. In Proceedings of the ACM SIGSOFT Intl. Symp. on Software Testing and Analysis (ISSTA), pages 118--128, 2007. Google Scholar
Digital Library
- }}B. Dufour, B. G. Ryder, and G. Sevitsky. A scalable technique for characterizing the usage of temporaries in framework intensive Java applications. In Proceedings of the 16th ACM SIGSOFT Intl. Symp. on Foundations of Software Engineering (FSE), pages 59--70, 2008. Google Scholar
Digital Library
- }}M. Hirzel, J. Henkel, A. Diwan, and M. Hind. Understanding the connectivity of heap objects. In Proceedings of the Workshop on Memory Systems Performance (MSP) and the Intl. Symp. on Memory Management (ISMM), pages 143--156, 2003. Google Scholar
Digital Library
- }}H. Inoue, D. Stefanovic, and S. Forrest. On the prediction of java object lifetimes. IEEE Transactions on Computers, 55: 880--892, 2006. Google Scholar
Digital Library
- }}K. Lee and S. P. Midkiff. A two-phase escape analysis for parallel Java programs. In Proceedings of the 15th Intl. Conf. on Parallel Architectures and Compilation Techniques (PACT), pages 53--62, 2006. Google Scholar
Digital Library
- }}T. Lev-Ami, T. Reps, M. Sagiv, and R.Wilhelm. Putting static analysis to work for verification: A case study. In In Intl. Symp. on Software Testing and Analysis, pages 26--38, 2000. Google Scholar
Digital Library
- }}O. Lhotak and L. Hendren. Context-sensitive points-to analysis: is it worth it? In Proceedings of the 15th Intl. Conf. on Compiler Construction, pages 47--64, 2006. Google Scholar
Digital Library
- }}D. Liang, M. Pennings, and M. J. Harrold. Evaluating the precision of static reference analysis using profiling. In Proceedings of the ACM SIGSOFT Intl. Symp. on Software Testing and Analysis (ISSTA), pages 22--32, 2002. Google Scholar
Digital Library
- }}D. Liang, M. Pennings, and M. J. Harrold. Evaluating the impact of context-sensitivity on andersen's algorithm for java programs. In Proceedings of the ACM SIGPLAN-SIGSOFT Workshop on Program Analysis For Software Tools and Engineering (PASTE), pages 6--12, 2006. Google Scholar
Digital Library
- }}A. Milanova, A. Rountev, and B. Ryder. Parameterized object sensitivity for points-to and side-effect analyses for Java. In Proceedings of the ACM SIGSOFT Intl. Symp. on Software Testing and Analysis (ISSTA), pages 1--11, 2002. Google Scholar
Digital Library
- }}N. Mitchell. The runtime structure of object ownership. In Proceedings of the 20th European Conf. on Object-Oriented Programming (ECOOP), pages 74--98, 2006. Google Scholar
Digital Library
- }}N. Mitchell and G. Sevitsky. The causes of bloat, the limits of health. In Proceedings of the 22nd ACM SIGPLAN Conf. on Object-Oriented Programming Systems, Languages and Applications (OOPSLA), pages 245--260, 2007. Google Scholar
Digital Library
- }}N. Mitchell, E. Schonberg, and G. Sevitsky. Making sense of large heaps. In Proceedings of the 23rd European Conf. on Object-Oriented Programming (ECOOP), pages 77--97, 2009. Google Scholar
Digital Library
- }}M. Naik and A. Aiken. Conditional must not aliasing for static race detection. In Proceedings of the 34th ACM SIGPLAN SIGACT Symp. on Principles of Programming Languages (POPL), pages 327--338, 2007. Google Scholar
Digital Library
- }}M. Naik, A. Aiken, and J. Whaley. Effective static race detection for Java. In Proceedings of the ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI), pages 308--319, 2006. Google Scholar
Digital Library
- }}E. Ruf. Effective synchronization removal for Java. In Proceedings of the ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI), pages 208--218, 2000. Google Scholar
Digital Library
- }}M. Sagiv, T.W. Reps, and R.Wilhelm. Parametric shape analysis via 3-valued logic. ACM Transactions on Programming Languages and Systems, 24(3):217--298, 2002. Google Scholar
Digital Library
- }}M. L. Seidl and B. G. Zorn. Segregating heap objects by reference behavior and lifetime. SIGOPS Oper. Syst. Rev., 32 (5):12--23, 1998. Google Scholar
Digital Library
- }}M. L. Seidl, M. L. Seidl, M. L. Seidl, B. G. Zorn, B. G. Zorn, and B. G. Zorn. Predicting references to dynamically allocated objects. Technical report, 1997.Google Scholar
- }}R. Shaham, E. K. Kolodner, and M. Sagiv. Estimating the impact of heap liveness information on space consumption in Java. In Proceedings of the Workshop on Memory Systems Performance (MSP) and the Intl. Symp. on Memory Management (ISMM), pages 171--182, 2002. Google Scholar
Digital Library
- }}O. Shivers. Control-flow analysis in Scheme. In Proceedings of the ACM SIGPLAN Conf. on Programming Language Design and Implementation (PLDI), pages 164--174, 1988. Google Scholar
Digital Library
- }}C. Unkel and M. S. Lam. Automatic inference of stationary fields: a generalization of Java's final fields. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages (POPL), pages 183--195, 2008. Google Scholar
Digital Library
- }}E. Y.-B. Wang. Analysis of Recursive Types in an Imperative Language. PhD thesis, Univ. of Calif., Berkeley, CA, 1994. Google Scholar
Digital Library
- }}J. Whaley. Joeq: A virtual machine and compiler infrastructure. Science of Computer Programming, 57(3):339--356, 2005. Google Scholar
Digital Library
- }}R. M. Yoo, Y. Ni, A. Welc, B. Saha, A.-R. Adl-Tabatabai, and H.-H. S. Lee. Kicking the tires of software transactional memory: why the going gets tough. In Proceedings of the 20th ACM Symp. on Parallelism in Algorithms and Architectures (SPAA), pages 265--274, 2008. Google Scholar
Digital Library
Index Terms
A dynamic evaluation of the precision of static heap abstractions
Recommendations
Heap Abstractions for Static Analysis
Heap data is potentially unbounded and seemingly arbitrary. Hence, unlike stack and static data, heap data cannot be abstracted in terms of a fixed set of program variables. This makes it an interesting topic of study and there is an abundance of ...
A dynamic evaluation of the precision of static heap abstractions
OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applicationsThe quality of a static analysis of heap-manipulating programs is largely determined by its heap abstraction. Object allocation sites are a commonly-used abstraction, but are too coarse for some clients. The goal of this paper is to investigate how ...
Combined Static and Dynamic Analysis
Static analysis is usually faster than dynamic analysis but less precise. Therefore it is often desirable to retain information from static analysis for run-time verification, or to compare the results of both techniques. However, this requires writing ...







Comments