skip to main content
research-article

Elephant tracks: portable production of complete and precise gc traces

Published:20 June 2013Publication History
Skip Abstract Section

Abstract

We present Elephant Tracks (ET), a dynamic program analysis tool for Java that produces detailed traces of garbage collection-related events, including object allocations, object deaths, and pointer updates. Like prior work, our tracing tool is based on the Merlin algorithm [6,7], but offers several substantial new capabilities. First, it is much more precise than previous tools: it traces method entries and exits and measures time in terms of them, allowing it to place events precisely in the context of the program structure. Second, it is implemented using a combination of JVM Tool Interface (JVMTI)[13] callbacks and bytecode rewriting, and works with any standard JVM. Finally, it produces complete traces, including weak references, events from the Java Native Interface and sun.misc.Unsafe, and VM start up objects. In this paper we also explore the general design space of tracing tools, and carefully define the execution model that the traces represent.

References

  1. Ole Agesen, David Detlefs, and J. Eliot B. Moss. Garbage collection and local variable type-precision and liveness in Java virtual machines. In PLDI, pages 269?-279, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Bowen Alpern, Steve Augart, Stephen M. Blackburn, Maria A. Butrico, Anthony Cocchi, Perry Cheng, Julian Dolby, Stephen J. Fink, David Grove, Michael Hind, Kathryn S. McKinley, Mark F. Mergen, J. Eliot B. Moss, Ton Anh Ngo, Vivek Sarkar, and Martin Trapp. The Jikes Research Virtual Machine project: Building an open-source research community. IBM Systems Journal, 44 (2): 399--418, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Eric Bruneton, Romain Langlet, and Thierry Coupaye. ASM: A code manipulation tool to implement adaptable systems. In Adaptable and Extensible Component Systems, Grenoble, France, November 2002. 12 pages.Google ScholarGoogle Scholar
  4. James Foucar. A Platform for Research into Object-Level Trace Generation. PhD thesis, The University of New Mexico, 2006.Google ScholarGoogle Scholar
  5. Samuel Z. Guyer, Kathryn S. McKinley, and Daniel Frampton. Free-Me: A static analysis for automatic individual object reclamation. ACM SIGPLAN Notices, 41 (6): 364--375, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Matthew Hertz, Stephen M. Blackburn, J. Eliot B. Moss, Kathryn S. McKinley, and Darko Stefanović. Error-free garbage collection traces: How to cheat and not get caught. SIGMETRICS Perform. Eval. Rev., 30: 140--151, June 2002. ISSN 0163--5999. http://doi.acm.org/10.1145/511399.511352. URL http://doi.acm.org/10.1145/511399.511352. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Matthew Hertz, Stephen M. Blackburn, J. Eliot B. Moss, Kathryn S. McKinley, and Darko Stefanovic. Generating object lifetime traces with Merlin. ACM Transactions on Programming Languages and Systems, 28 (3): 476--516, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Martin Hirzel, Amer Diwan, and Johannes Henkel. On the usefulness of type and liveness accuracy for garbage collection and leak detection. ACM Transactions on Programming Languages and Systems (TOPLAS), 24 (6): 593--624, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Martin Hirzel, Amer Diwan, and Matthew Hertz. Connectivity-based garbage collection. In ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pages 359--373, 2003. ISBN 1--58113--712--5. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Hajime Inoue, Darko Stefanović, and Stephanie Forrest. On the prediction of Java object lifetimes. IEEE Transactions on Computers, 55 (7): 880--892, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Richard E. Jones and Chris Ryder. A study of Java object demographics. In Proceedings of the 7th International Symposium on Memory Management, pages 121--130. ACM, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Jonathan M. Lambert and James F. Power. Platform independent timing of Java virtual machine bytecode instructions. Electronic Notes in Theoretical Computer Science, 220 (3): 97--113, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Sun Microsystems. JVM Tool Interface, 2004. http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html.Google ScholarGoogle Scholar
  14. Richard A. Uhlig and Trevor N. Mudge. Trace-driven memory simulation: A survey. ACM Computing Surveys (CSUR), 29 (2): 128--170, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Elephant tracks: portable production of complete and precise gc traces

      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

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 48, Issue 11
        ISMM '13
        November 2013
        128 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2555670
        Issue’s Table of Contents
        • cover image ACM Conferences
          ISMM '13: Proceedings of the 2013 international symposium on memory management
          June 2013
          140 pages
          ISBN:9781450321006
          DOI:10.1145/2491894

        Copyright © 2013 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 20 June 2013

        Check for updates

        Qualifiers

        • research-article

      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!