Object equality profiling
- 26 October 2003
- conference paper
- Published by Association for Computing Machinery (ACM)
- Vol. 38 (11), 313-325
- https://doi.org/10.1145/949305.949333
Abstract
We present Object Equality Profiling (OEP), a new technique for helping programmers discover optimization opportunities in programs. OEP discovers opportunities for replacing a set of equivalent object instances with a single representative object. Such a set represents an opportunity for automatically or manually applying optimizations such as hash consing, heap compression, lazy allocation, object caching, invariant hoisting, and more. To evaluate OEP, we implemented a tool to help programmers reduce the memory usage of Java programs. Our tool performs a dynamic analysis that records all the objects created during a particular program run. The tool partitions the objects into equivalence classes, and uses collected timing information to determine when elements of an equivalence class could have been safely collapsed into a single representative object without affecting the behavior of that program run. We report the results of applying this tool to benchmarks, including two widely used Web application servers. Many benchmarks exhibit significant amounts of object equivalence, and in most benchmarks our profiler identifies optimization opportunities clustered around a small number of allocation sites. We present a case study of using our profiler to find simple manual optimizations that reduce the average space used by live objects in two SpecJVM benchmarks by 47% and 38% respectively.Keywords
This publication has 26 references indexed in Scilit:
- Data size optimizations for java programsPublished by Association for Computing Machinery (ACM) ,2003
- Error-free garbage collection tracesACM SIGMETRICS Performance Evaluation Review, 2002
- Space- and Time-Efficient Implementation of the Java Object ModelLecture Notes in Computer Science, 2002
- Lightweight monitor for Java VMACM SIGARCH Computer Architecture News, 1999
- Garbage collection and local variable type-precision and liveness in Java virtual machinesPublished by Association for Computing Machinery (ACM) ,1998
- Thin locksPublished by Association for Computing Machinery (ACM) ,1998
- A study of dead data members in C++ applicationsACM SIGPLAN Notices, 1998
- A behavioral notion of subtypingACM Transactions on Programming Languages and Systems, 1994
- Partitioning a graph in O(¦A¦log2¦V¦)Theoretical Computer Science, 1982
- AN n log n ALGORITHM FOR MINIMIZING STATES IN A FINITE AUTOMATONPublished by Elsevier ,1971