skip to main content
research-article

A dynamic evaluation of the precision of static heap abstractions

Published:17 October 2010Publication History
Skip Abstract Section

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

References

  1. }}Chord: A static and dynamic program analysis framework for Java. http://code.google.com/p/jchord/.Google ScholarGoogle Scholar
  2. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. }}B. Blanchet. Escape analysis for Java: Theory and practice. ACM Transactions on Programming Languages and Systems, 25(6):713--775, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. }}H. Inoue, D. Stefanovic, and S. Forrest. On the prediction of java object lifetimes. IEEE Transactions on Computers, 55: 880--892, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  27. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. }}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 ScholarGoogle Scholar
  30. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. }}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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. }}E. Y.-B. Wang. Analysis of Recursive Types in an Imperative Language. PhD thesis, Univ. of Calif., Berkeley, CA, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. }}J. Whaley. Joeq: A virtual machine and compiler infrastructure. Science of Computer Programming, 57(3):339--356, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. }}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 ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A dynamic evaluation of the precision of static heap abstractions

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader
            About Cookies On This Site

            We use cookies to ensure that we give you the best experience on our website.

            Learn more

            Got it!