skip to main content
10.1145/1375634.1375651acmconferencesArticle/Chapter ViewAbstractPublication PagesismmConference Proceedingsconference-collections
research-article

No bit left behind: the limits of heap data compression

Published:07 June 2008Publication History

ABSTRACT

On one hand, the high cost of memory continues to drive demand for memory efficiency on embedded and general purpose computers. On the other hand, programmers are increasingly turning to managed languages like Java for their functionality, programmability, and reliability. Managed languages, however, are not known for their memory efficiency, creating a tension between productivity and performance. This paper examines the sources and types of memory inefficiencies in a set of Java benchmarks. Although prior work has proposed specific heap data compression techniques, they are typically restricted to one model of inefficiency. This paper generalizes and quantitatively compares previously proposed memorysaving approaches and idealized heap compaction. It evaluates a variety of models based on strict and deep object equality, field value equality, removing bytes that are zero, and compressing fields and arrays with a limited number and range of values. The results show that substantial memory reductions are possible in the Java heap. For example, removing bytes that are zero from arrays is particularly effective, reducing the application's memory footprint by 41% on average.We are the first to combine multiple savings models on the heap, which very effectively reduces the application by up to 86%, on average 58%. These results demonstrate that future work should be able to combine a high productivity programming language with memory efficiency.

References

  1. B. Alpern, et al. The Jalapeño virtual machine. IBM Systems Journal, 39(1):211--238, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. C. S. Ananian and M. Rinard. Data size optimizations for Java programs. In Languages, Compiler, and Tool Support for Embedded Systems, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. A. W. Appel and M. J. R. Gonc¸alves. Hash-consing garbage collection. Technical Report CS-TR-412-93, Princeton University, 1993.]]Google ScholarGoogle Scholar
  4. D. Bacon, S. Fink, and D. Grove. Space- and time-efficient implementation of the Java object model. In European Conference for Object-Oriented Programming, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. M. Blackburn, et al. The DaCapo benchmarks: Java benchmarking development and analysis. In Object-Oriented Programming, Systems, Languages, and Applications, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. A. Cardon and M. Crochemore. Partitioning a graph in o(jaj log2 jvj). Theoretical Computer Science, 1982.]]Google ScholarGoogle Scholar
  7. G. Chen, M. Kandemir, and M. J. Irwin. Exploiting frequent field values in Java objects for reducing heap memory reqirements. In Virtual Execution Environments (VEE), 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. G. Chen, M. Kandemir, N. Vijaykrishnan, and M. J. Irwin. Field level analysis for heap space optimization in embedded Java environments. In International Symposium on Memory Management, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. G. Chen, M. Kandemir, N. Vijaykrishnan, M. J. Irwin, B. Mathiske, and M.Wolczko. Heap compression for memory-constrained Java environments. In Object-Oriented Programming, Systems, Languages, and Applications, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. N. D. Cooprider and J. D. Regehr. Offline compression for on-chip RAM. In Programming Language Design and Implementation, 2007.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. S. Dieckmann and U. H¨olzle. A study of allocation behavior of the SPECjvm98 Java benchmarks. In European Conference for Object-Oriented Programming, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. J. Ernst, W. Evans, C. W. Fraser, S. Lucco, and T. A. Proebsting. Code compression. In Programming Language Design and Implementation, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. D. Ernst, J. Cockrell, W. G. Griswold, and D. Notkin. Dynamically discovering likely program invariants to support program evolution. In International Conference on Software Engineering (ICSE), 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. W. S. Evans and C. W. Fraser. Bytecode compression via profiled grammar rewriting. In Programming Language Design and Implementation, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. S. Hangal and M. S. Lam. Tracking Down Software Bugs Using Automatic Anomaly Detection. In International Conference on Software Engineering, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. M. Hirzel, J. Henkel, A. Diwan, and M. Hind. Understanding the connectivity of heap objects. In International Symposium on Memory Management, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. D. Marinov and R. O?Callahan. Object equality profiling. In Object-Oriented Programming, Systems, Languages, and Applications, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. N. Mitchell and G. Sevitsky. The causes of bloat, the limits of health. In Object-Oriented Programming, Systems, Languages, and Applications, 2007.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. W. Pugh. Compressing Java class files. In Programming Language Design and Implementation, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. J. B. Sartor, M. Hirzel, and K. McKinley. No bit left behind: The limits of heap data compression (extended version). Technical Report TR-08-17, The University of Texas at Austin, 2008.]]Google ScholarGoogle Scholar
  21. Semiconductor Industry Association. SIA world semiconductor forcast 2007?2010, Nov. 2007. http://www.sia-online.org/pre release.cfm?ID=455.]]Google ScholarGoogle Scholar
  22. R. Shaham, E. K. Kolodner, and M. Sagiv. Heap profiling for space-efficient Java. In Programming Language Design and Implementation, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. A. Shankar, S. S. Sastry, R. Bodík, and J. E. Smith. Runtime specialization with optimistic heap analysis. In Object-Oriented Programming, Systems, Languages, and Applications, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. M. Stephenson, J. Babb, and S. Amarasinghe. Bitwidth analysis with application to silicon compilation. In Programming Language Design and Implementation, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. TIOBE Software. TIOBE programming community index, 2007. http://tiobe.com.tpci.html.]]Google ScholarGoogle Scholar
  26. B. Titzer, J. S. Auerbach, D. F. Bacon, and J. Palsberg. The ExoVM system for automatic VM application reduction. In Programming Language Design and Implementation, 2007.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. B. L. Titzer. Virgil: Objects on the head of a pin. In Object-Oriented Programming, Systems, Languages, and Applications, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. B. L. Titzer and J. Palsberg. Vertical object layout and compression for fixed heaps. In Compilers, Architectures, and Synthesis for Embedded Systems, 2007.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Y. Zhang and R. Gupta. Compression transformations for dynamically allocated data structures. In International Conference on Compiler Construction, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. C. Zilles. Accordion arrays: Selective compression of unicode arrays in Java. In International Symposium on Memory Management, 2007.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. No bit left behind: the limits of heap data compression

    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
    • Published in

      cover image ACM Conferences
      ISMM '08: Proceedings of the 7th international symposium on Memory management
      June 2008
      170 pages
      ISBN:9781605581347
      DOI:10.1145/1375634

      Copyright © 2008 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 7 June 2008

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Author Tags

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate72of156submissions,46%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader