TY - JOUR
T1 - Abstracting runtime heaps for program understanding
AU - Marron, Mark
AU - Sanchez, Cesar
AU - Su, Zhendong
AU - Fahndrich, Manuel
PY - 2013
Y1 - 2013
N2 - Modern programming environments provide extensive support for inspecting, analyzing, and testing programs based on the algorithmic structure of a program. Unfortunately, support for inspecting and understanding runtime data structures during execution is typically much more limited. This paper provides a general purpose technique for abstracting and summarizing entire runtime heaps. We describe the abstract heap model and the associated algorithms for transforming a concrete heap dump into the corresponding abstract model as well as algorithms for merging, comparing, and computing changes between abstract models. The abstract model is designed to emphasize high-level concepts about heap-based data structures, such as shape and size, as well as relationships between heap structures, such as sharing and connectivity. We demonstrate the utility and computational tractability of the abstract heap model by building a memory profiler. We use this tool to identify, pinpoint, and correct sources of memory bloat for programs from DaCapo.
AB - Modern programming environments provide extensive support for inspecting, analyzing, and testing programs based on the algorithmic structure of a program. Unfortunately, support for inspecting and understanding runtime data structures during execution is typically much more limited. This paper provides a general purpose technique for abstracting and summarizing entire runtime heaps. We describe the abstract heap model and the associated algorithms for transforming a concrete heap dump into the corresponding abstract model as well as algorithms for merging, comparing, and computing changes between abstract models. The abstract model is designed to emphasize high-level concepts about heap-based data structures, such as shape and size, as well as relationships between heap structures, such as sharing and connectivity. We demonstrate the utility and computational tractability of the abstract heap model by building a memory profiler. We use this tool to identify, pinpoint, and correct sources of memory bloat for programs from DaCapo.
KW - Heap structure
KW - memory profiling
KW - program understanding
KW - runtime analysis
UR - http://www.scopus.com/inward/record.url?scp=84878387692&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84878387692&partnerID=8YFLogxK
U2 - 10.1109/TSE.2012.69
DO - 10.1109/TSE.2012.69
M3 - Article
AN - SCOPUS:84878387692
SN - 0098-5589
VL - 39
SP - 774
EP - 786
JO - IEEE Transactions on Software Engineering
JF - IEEE Transactions on Software Engineering
IS - 6
M1 - 6331492
ER -