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.
- B. Alpern, et al. The Jalapeño virtual machine. IBM Systems Journal, 39(1):211--238, 2000.]] Google ScholarDigital Library
- C. S. Ananian and M. Rinard. Data size optimizations for Java programs. In Languages, Compiler, and Tool Support for Embedded Systems, 2003.]] Google ScholarDigital Library
- A. W. Appel and M. J. R. Gonc¸alves. Hash-consing garbage collection. Technical Report CS-TR-412-93, Princeton University, 1993.]]Google Scholar
- 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 ScholarDigital Library
- S. M. Blackburn, et al. The DaCapo benchmarks: Java benchmarking development and analysis. In Object-Oriented Programming, Systems, Languages, and Applications, 2006.]] Google ScholarDigital Library
- A. Cardon and M. Crochemore. Partitioning a graph in o(jaj log2 jvj). Theoretical Computer Science, 1982.]]Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- N. D. Cooprider and J. D. Regehr. Offline compression for on-chip RAM. In Programming Language Design and Implementation, 2007.]] Google ScholarDigital Library
- 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 ScholarDigital Library
- J. Ernst, W. Evans, C. W. Fraser, S. Lucco, and T. A. Proebsting. Code compression. In Programming Language Design and Implementation, 1997.]] Google ScholarDigital Library
- 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 ScholarDigital Library
- W. S. Evans and C. W. Fraser. Bytecode compression via profiled grammar rewriting. In Programming Language Design and Implementation, 2001.]] Google ScholarDigital Library
- S. Hangal and M. S. Lam. Tracking Down Software Bugs Using Automatic Anomaly Detection. In International Conference on Software Engineering, 2002.]] Google ScholarDigital Library
- M. Hirzel, J. Henkel, A. Diwan, and M. Hind. Understanding the connectivity of heap objects. In International Symposium on Memory Management, 2002.]] Google ScholarDigital Library
- D. Marinov and R. O?Callahan. Object equality profiling. In Object-Oriented Programming, Systems, Languages, and Applications, 2003.]] Google ScholarDigital Library
- N. Mitchell and G. Sevitsky. The causes of bloat, the limits of health. In Object-Oriented Programming, Systems, Languages, and Applications, 2007.]] Google ScholarDigital Library
- W. Pugh. Compressing Java class files. In Programming Language Design and Implementation, 1999.]] Google ScholarDigital Library
- 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 Scholar
- Semiconductor Industry Association. SIA world semiconductor forcast 2007?2010, Nov. 2007. http://www.sia-online.org/pre release.cfm?ID=455.]]Google Scholar
- R. Shaham, E. K. Kolodner, and M. Sagiv. Heap profiling for space-efficient Java. In Programming Language Design and Implementation, 2001.]] Google ScholarDigital Library
- 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 ScholarDigital Library
- M. Stephenson, J. Babb, and S. Amarasinghe. Bitwidth analysis with application to silicon compilation. In Programming Language Design and Implementation, 2000.]] Google ScholarDigital Library
- TIOBE Software. TIOBE programming community index, 2007. http://tiobe.com.tpci.html.]]Google Scholar
- 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 ScholarDigital Library
- B. L. Titzer. Virgil: Objects on the head of a pin. In Object-Oriented Programming, Systems, Languages, and Applications, 2006.]] Google ScholarDigital Library
- B. L. Titzer and J. Palsberg. Vertical object layout and compression for fixed heaps. In Compilers, Architectures, and Synthesis for Embedded Systems, 2007.]] Google ScholarDigital Library
- Y. Zhang and R. Gupta. Compression transformations for dynamically allocated data structures. In International Conference on Compiler Construction, 2002.]] Google ScholarDigital Library
- C. Zilles. Accordion arrays: Selective compression of unicode arrays in Java. In International Symposium on Memory Management, 2007.]] Google ScholarDigital Library
Index Terms
- No bit left behind: the limits of heap data compression
Recommendations
Heap compression for memory-constrained Java environments
OOPSLA '03: Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applicationsJava is becoming the main software platform for consumer and embedded devices such as mobile phones, PDAs, TV set-top boxes, and in-vehicle systems. Since many of these systems are memory constrained, it is extremely important to keep the memory ...
CompEx++: Compression-Expansion Coding for Energy, Latency, and Lifetime Improvements in MLC/TLC NVMs
Multilevel/triple-level cell nonvolatile memories (MLC/TLC NVMs) such as phase-change memory (PCM) and resistive RAM (RRAM) are the subject of active research and development as replacement candidates for DRAM, which is limited by its high refresh power ...
Revisiting wear leveling design on compression applied 3D NAND flash memory: work-in-progress
CODES '18: Proceedings of the International Conference on Hardware/Software Codesign and System SynthesisCompression has been demonstrated as an efficient method for lifetime improvement on flash memory. However, data compression ratios are various, which bring proportional wearing on flash pages. Furthermore, the compression schemes have still not been ...
Comments