{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,3]],"date-time":"2026-05-03T03:29:43Z","timestamp":1777778983470,"version":"3.51.4"},"reference-count":28,"publisher":"SAGE Publications","issue":"2","license":[{"start":{"date-parts":[[2012,5,7]],"date-time":"2012-05-07T00:00:00Z","timestamp":1336348800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/journals.sagepub.com\/page\/policies\/text-and-data-mining-license"}],"content-domain":{"domain":["journals.sagepub.com"],"crossmark-restriction":true},"short-container-title":["Information Visualization"],"published-print":{"date-parts":[[2013,4]]},"abstract":"<jats:p>Understanding the data structures in a program is crucial to understanding how the program works, or why it does not work. Inspecting the code that implements the data structures, however, is an arduous task and often fails to yield insights into the global organization of a program\u2019s data. Inspecting the actual contents of the heap solves these problems but presents a significant challenge of its own: finding an effective way to present the enormous number of objects it contains.<\/jats:p>\n                  <jats:p>In this paper we present Heapviz, a tool for visualizing and exploring snapshots of the heap obtained from a running Java program. Unlike existing tools, such as traditional debuggers, Heapviz presents a global view of the program state as a graph, together with powerful interactive capabilities for navigating it. Our tool employs several key techniques that help manage the scale of the data. First, we reduce the size and complexity of the graph by using algorithms inspired by static shape analysis to aggregate the nodes that make up a data structure. Second, we implement a powerful visualization component whose interactive interface provides extensive support for exploring the graph. The user can search for objects based on type, connectivity, and field values; group objects; and color or hide and show each group. The user may also inspect individual objects to see their field values and neighbors in the graph. These interactive abilities help the user manage the complexity of these huge graphs.<\/jats:p>\n                  <jats:p>By applying Heapviz to both constructed and real-world examples, we show that it provides programmers with a powerful and intuitive tool for exploring program behavior.<\/jats:p>","DOI":"10.1177\/1473871612438786","type":"journal-article","created":{"date-parts":[[2012,5,8]],"date-time":"2012-05-08T20:20:55Z","timestamp":1336508455000},"page":"163-177","update-policy":"https:\/\/doi.org\/10.1177\/sage-journals-update-policy","source":"Crossref","is-referenced-by-count":3,"title":["Heapviz: Interactive heap visualization for program understanding and debugging"],"prefix":"10.1177","volume":"12","author":[{"given":"Sean","family":"Kelley","sequence":"first","affiliation":[{"name":"Department of Computer Science, Tufts University, Medford, MA, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Edward","family":"Aftandilian","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Tufts University, Medford, MA, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Connor","family":"Gramazio","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Tufts University, Medford, MA, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Nathan","family":"Ricci","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Tufts University, Medford, MA, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Sara L.","family":"Su","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Tufts University, Medford, MA, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Samuel Z.","family":"Guyer","sequence":"additional","affiliation":[{"name":"Department of Computer Science, Tufts University, Medford, MA, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"179","published-online":{"date-parts":[[2012,5,7]]},"reference":[{"key":"bibr1-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/800027.808439"},{"key":"bibr2-1473871612438786","unstructured":"Quest. JProbe memory debugger. http:\/\/www.quest.com\/jprobe\/ (accessed 22 July 2010)."},{"key":"bibr3-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1109\/TOOLS.2001.911758"},{"key":"bibr4-1473871612438786","unstructured":"O\u2019Hair K. HPROF: a heap\/CPU profiling tool in J2SE 5.0. http:\/\/java.sun.com\/developer\/technicalArticles\/Programming\/HPROF.html (2004, accessed 30 April 2010)."},{"key":"bibr5-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/1054972.1055031"},{"key":"bibr6-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/165854.165919"},{"key":"bibr7-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1109\/ICSM.1995.526549"},{"key":"bibr8-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-49255-0_176"},{"key":"bibr9-1473871612438786","first-page":"115","volume-title":"ACM symposium on software visualization","author":"Steven PR","year":"2005"},{"key":"bibr10-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/237721.237724"},{"key":"bibr11-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/292540.292552"},{"key":"bibr12-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45875-1_15"},{"key":"bibr13-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/1268784.1268870"},{"key":"bibr14-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/1409720.1409729"},{"key":"bibr15-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1109\/ICPC.2006.20"},{"key":"bibr16-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-48743-3_6"},{"key":"bibr17-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/1138912.1138924"},{"key":"bibr18-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1006\/jvlc.2002.0238"},{"key":"bibr19-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03013-0_5"},{"key":"bibr20-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1109\/VISSOF.2009.5336418"},{"key":"bibr21-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2008.91"},{"key":"bibr22-1473871612438786","unstructured":"Marron M, Sanchez C, Su Z. High-level heap abstractions for debugging programs. http:\/\/software.imdea.org\/~marron\/papers\/publications.html (2010, accessed 30 April 2010)."},{"key":"bibr23-1473871612438786","unstructured":"Graph Drawing Steering Committee. The GraphML file format. http:\/\/graphml.graphdrawing.org (2010, accessed 30 April 2010)."},{"key":"bibr24-1473871612438786","unstructured":"Sun Microsystems. JVM tool interface. http:\/\/java.sun.com\/javase\/6\/docs\/platform\/jvmti\/jvmti.html (2010, accessed 30 April 2010)."},{"key":"bibr25-1473871612438786","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167488"},{"key":"bibr26-1473871612438786","first-page":"53","volume-title":"SoftVis \u201810: Proceedings of the 5th ACM Symposium on Software Visualization","author":"Aftandilan E","year":"2008"},{"key":"bibr27-1473871612438786","unstructured":"SPECjvm98 Documentation. Standard Performance Evaluation Corporation. release 1.03 edition, 1999."},{"key":"bibr28-1473871612438786","unstructured":"SPECjbb2000 Documentation. Standard Performance Evaluation Corporation. release 1.01 edition, 2001."}],"container-title":["Information Visualization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1473871612438786","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/full-xml\/10.1177\/1473871612438786","content-type":"application\/xml","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/journals.sagepub.com\/doi\/pdf\/10.1177\/1473871612438786","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,29]],"date-time":"2026-04-29T19:21:08Z","timestamp":1777490468000},"score":1,"resource":{"primary":{"URL":"https:\/\/journals.sagepub.com\/doi\/10.1177\/1473871612438786"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,5,7]]},"references-count":28,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2013,4]]}},"alternative-id":["10.1177\/1473871612438786"],"URL":"https:\/\/doi.org\/10.1177\/1473871612438786","relation":{},"ISSN":["1473-8716","1473-8724"],"issn-type":[{"value":"1473-8716","type":"print"},{"value":"1473-8724","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,5,7]]}}}