Cork
- 17 January 2007
- conference paper
- conference paper
- Published by Association for Computing Machinery (ACM) in Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '07
- Vol. 42 (1), 31-38
- https://doi.org/10.1145/1190216.1190224
Abstract
A memory leak in a garbage-collected program occurs when the program inadvertently maintains references to objects that it no longer needs. Memory leaks cause systematic heap growth, de- grading performance and resulting in program crashes after per- haps days or weeks of execution. Prior approaches for detecting memory leaks rely on heap differencing or detailed object statis- tics which store state proportional to the number of objects in the heap. These overheads preclude their use on the same processor for deployed long-running applications. This paper introduces a dynamic heap-summarization technique based on type that accurately identifies leaks, is space effic ient (adding less than 1% to the heap), and is time efficient (addin g 2.3% on average to total execution time). We implement this approach in Cork which utilizes dynamic type information and garbage col- lection to summarize the live objects in a type points-from graph (TPFG) whose nodes (types) and edges (references between types) are annotated with volume. Cork compares TPFGs across multiple collections, identifies growing data structures, and compu tes a type slice for the user. Cork is accurate: it identifies systematic heap growth with no false positives in 4 of 15 benchmarks we tested. Cork's slice report enabled us (non-experts) to quickly eli minate growing data structures in SPECjbb2000 and Eclipse, something their developers had not previously done. Cork is accurate, scal- able, and efficient enough to consider using online.Keywords
This publication has 14 references indexed in Scilit:
- BellPublished by Association for Computing Machinery (ACM) ,2006
- The DaCapo benchmarksPublished by Association for Computing Machinery (ACM) ,2006
- The DaCapo benchmarksACM SIGPLAN Notices, 2006
- Low-overhead memory leak detection using adaptive statistical profilingPublished by Association for Computing Machinery (ACM) ,2004
- Myths and realitiesPublished by Association for Computing Machinery (ACM) ,2004
- A practical flow-sensitive and context-sensitive C and C++ memory leak detectorPublished by Association for Computing Machinery (ACM) ,2003
- Visualizing reference patterns for solving memory leaks in JavaConcurrency: Practice and Experience, 2000
- Adaptive optimization in the Jalapeño JVMPublished by Association for Computing Machinery (ACM) ,2000
- Implementing jalapeño in JavaPublished by Association for Computing Machinery (ACM) ,1999
- Heap profiling for space efficiencyLecture Notes in Computer Science, 1996