Abstract
Most of today's programs make use of a sizable heap to store dynamic data. To characterize the heap dynamics, this paper presents a set of metrics to measure the average amount of data live and dead in a period of execution. They are collectively called average liveness. The paper defines these metrics of average liveness, gives linear-time algorithms for measurement, and discusses their use in finding the best heap size. The algorithms are implemented in a Java tracing system called Elephant Tracks and evaluated using the Dacapo benchmarks running on the Oracle HotSpot and IBM J9 Java virtual machines.
- E. Albert, S. Genaim, and M. Gomez-Zamalloa Gil. Live heap space analysis for languages with garbage collection. In ISMM, pages 129--138, 2009. Google Scholar
Digital Library
- E. Albert, S. Genaim, and M. Gomez-Zamalloa. Parametric inference of memory requirements for garbage collected languages. In ISMM, pages 121--130, 2010. Google Scholar
Digital Library
- D. F. Bacon and V. T. Rajan. Concurrent cycle collection in reference counted systems. In Proceedings of the 15th European Conference on Object-Oriented Programming, pages 207--235, 2001. Google Scholar
Digital Library
- D. F. Bacon, C. R. Attanasio, H. B. Lee, V. T. Rajan, and S. Smith. Java without the coffee breaks: a nonintrusive multiprocessor garbage collector. Proceedings of PLDI, 36(5):92--103, 2001. ISSN 0362- 1340. Google Scholar
Digital Library
- D. F. Bacon, P. Cheng, and V. T. Rajan. A unified theory of garbage collection. In Proceedings of OOPSLA, pages 50--68, Vancouver, British Columbia, 2004. Google Scholar
Digital Library
- S. Blackburn, R. E. Jones, K. S. McKinley, and J. E. B. Moss. Beltway: Getting around garbage collection gridlock. In Proceedings of PLDI, pages 153--164, 2002. Google Scholar
Digital Library
- S. M. Blackburn et al. The DaCapo benchmarks: Java benchmarking development and analysis. In Proceedings of OOPSLA, 2006. Google Scholar
Digital Library
- V. Braberman, F. Fernandez, D. Garbervetsky, and S. Yovine. Parametric prediction of heap memory requirements. In ISMM, pages 141--150, 2008. Google Scholar
Digital Library
- S. Dieckmann and U. Holzle. A study of the allocation behavior of the specjvm98 java benchmark. In ECOOP, pages 92--115, 1999. Google Scholar
Digital Library
- C. Ding and T. Chilimbi. All-window profiling of concurrent executions. In Proceedings of PPoPP, 2008. Poster paper. Google Scholar
Digital Library
- B. Dufour, K. Driesen, L. Hendren, and C. Verbrugge. Dynamic metrics for java. In Proceedings of OOPSLA, pages 149--168, 2003. Google Scholar
Digital Library
- H. Eran and E. Petrank. A study of data structures with a deep heap shape. In Proceedings of the ACM SIGPLAN Workshop on Memory System Performance and Correctness, page 2, 2013. Google Scholar
Digital Library
- M. Hertz, S. M. Blackburn, K. S. McKinley, J. E. B. Moss, and D. Stefanovic. Generating object lifetime traces with Merlin. ACM TOPLAS, 28(3):476--516, 2006. Google Scholar
Digital Library
- R. E. Jones and C. Ryder. A study of java object demographics. In ISMM, pages 121--130, 2008. Google Scholar
Digital Library
- J.-S. Kim and Y. Hsu. Memory system behavior of java programs: Methodology and analysis. In Proceedings of the 2000 ACM SIG- METRICS International Conference on Measurement and Modeling of Computer Systems, pages 264--274, 2000. Google Scholar
Digital Library
- P. Li and C. Ding. All-window data liveness. In Proceedings of the ACM SIGPLAN Workshop on Memory Systems Performance and Correctness, 2013. Google Scholar
Digital Library
- H. Luo, X. Xiang, and C. Ding. Characterizing active data sharing in threaded applications using shared footprint. In Proceedings of the The 11th International Workshop on Dynamic Analysis, 2013.Google Scholar
- S. Microsystems. Jvm tool interface. In http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html., 2004.Google Scholar
- T. Mytkowicz, A. Diwan, M. Hauswirth, and P. F. Sweeney. Producing wrong data without doing anything obviously wrong! In Proceedings of ASPLOS, pages 265--276, 2009. Google Scholar
Digital Library
- N. Ricci, S. Guyer, and E. Moss. Elephant tracks: Portable production of complete and precise GC traces. In Proceedings of ISMM, pages 109--118, 2013. Google Scholar
Digital Library
- N. Rojemo and C. Runciman. Lag, drag, void and use - heap profiling and space-efficient compilation revisited. In Proceedings of ICFP, pages 34--41, 1996. Google Scholar
Digital Library
- J. Singer, G. Brown, I.Watson, and J. Cavazos. Intelligent selection of application-specific garbage collectors. In Proceedings of the International Symposium on Memory Management, 2007. Google Scholar
Digital Library
- D. Ungar. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. SIGSOFT Softw. Eng. Notes, 9(3):157--167, Apr. 1984. ISSN 0163--5948. . URL http://doi.acm.org/10.1145/390010.808261. Google Scholar
Digital Library
- S. C. Vestal. Garbage collection: an exercise in distributed, fault- tolerant programming. PhD thesis, 1987. Google Scholar
Digital Library
- F. Xian, W. Srisa-an, and H. Jiang. Allocation-phase aware thread scheduling policies to improve garbage collection performance. In Proceedings of the 6th International Symposium on Memory Management, 2007. Google Scholar
Digital Library
- X. Xiang, B. Bao, T. Bai, C. Ding, and T. M. Chilimbi. All-window profiling and composable models of cache sharing. In Proceedings of PPoPP, pages 91--102, 2011. Google Scholar
Digital Library
- X. Xiang, B. Bao, C. Ding, and Y. Gao. Linear-time modeling of program working set in shared cache. In Proceedings of PACT, pages 350--360, 2011. Google Scholar
Digital Library
- X. Xiang, C. Ding, H. Luo, and B. Bao. HOTL: a higher order theory of locality. In Proceedings of ASPLOS, pages 343--356, 2013. Google Scholar
Digital Library
- G. H. Xu. Resurrector: a tunable object lifetime profiling technique for optimizing real-world programs. In Proceedings of OOPSLA, pages 111--130, 2013. Google Scholar
Digital Library
Index Terms
Modeling heap data growth using average liveness
Recommendations
Modeling heap data growth using average liveness
ISMM '14: Proceedings of the 2014 international symposium on Memory managementMost of today's programs make use of a sizable heap to store dynamic data. To characterize the heap dynamics, this paper presents a set of metrics to measure the average amount of data live and dead in a period of execution. They are collectively called ...
Controlling garbage collection and heap growth to reduce the execution time of Java applications
In systems that support garbage collection, a tension exists between collecting garbage too frequently and not collecting it frequently enough. Garbage collection that occurs too frequently may introduce unnecessary overheads at the risk of not ...
Model checking recursive programs interacting via the heap
Almost all modern imperative programming languages include operations for dynamically manipulating the heap, for example by allocating and deallocating objects, and by updating reference fields. In the presence of recursive procedures and local ...







Comments