{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,30]],"date-time":"2026-01-30T03:05:59Z","timestamp":1769742359664,"version":"3.49.0"},"reference-count":50,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2013,7,1]],"date-time":"2013-07-01T00:00:00Z","timestamp":1372636800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000143","name":"Division of Computing and Communication Foundations","doi-asserted-by":"publisher","award":["CCF-0546040, CCF-1017204"],"award-info":[{"award-number":["CCF-0546040, CCF-1017204"]}],"id":[{"id":"10.13039\/100000143","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100004316","name":"International Business Machines Corporation","doi-asserted-by":"publisher","id":[{"id":"10.13039\/100004316","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2013,7]]},"abstract":"<jats:p>A memory leak in a Java program occurs when object references that are no longer needed are unnecessarily maintained. Such leaks are difficult to detect because static analysis typically cannot precisely identify these redundant references, and existing dynamic leak detection tools track and report fine-grained information about individual objects, producing results that are usually hard to interpret and lack precision.<\/jats:p>\n          <jats:p>\n            In this article we introduce a novel\n            <jats:italic>container-based<\/jats:italic>\n            heap-tracking technique, based on the fact that many memory leaks in Java programs occur due to incorrect uses of containers, leading to containers that keep references to unused data entries. The novelty of the described work is twofold: (1) instead of tracking arbitrary objects and finding leaks by analyzing references to unused objects, the technique tracks only containers and directly identifies the source of the leak, and (2) the technique computes a confidence value for each container based on a combination of its memory consumption and its elements' staleness (time since last retrieval), while previous approaches do not consider such combined metrics. Our experimental results show that the reports generated by the proposed technique can be very precise: for two bugs reported by Sun, a known bug in SPECjbb 2000, and an example bug from IBM developerWorks, the top containers in the reports include the containers that leak memory.\n          <\/jats:p>","DOI":"10.1145\/2491509.2491511","type":"journal-article","created":{"date-parts":[[2013,7,30]],"date-time":"2013-07-30T13:35:22Z","timestamp":1375191322000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":20,"title":["Precise memory leak detection for java software using container profiling"],"prefix":"10.1145","volume":"22","author":[{"given":"Guoqing","family":"Xu","sequence":"first","affiliation":[{"name":"University of California, Irvine, CA"}]},{"given":"Atanas","family":"Rountev","sequence":"additional","affiliation":[{"name":"Ohio State University, OH"}]}],"member":"320","published-online":{"date-parts":[[2013,7,30]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1869459.1869519"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1168857.1168866"},{"key":"e_1_2_1_3_1","unstructured":"Ca Wily Technology. 2013. Wily introscope leakhunter. http:\/\/www.adhoc-international.com\/pages\/en\/structure\/download\/cawily_introscope2.pdf.  Ca Wily Technology. 2013. Wily introscope leakhunter. http:\/\/www.adhoc-international.com\/pages\/en\/structure\/download\/cawily_introscope2.pdf."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250789"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320386"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806799.1806874"},{"key":"e_1_2_1_7_1","unstructured":"Dacapo Benchmarks. 2006. DaCapo benchmarks. http:\/\/www.dacapo-bench.org.  Dacapo Benchmarks. 2006. DaCapo benchmarks. http:\/\/www.dacapo-bench.org."},{"key":"e_1_2_1_8_1","volume-title":"Proceedings of the USENIX Conference on Object-Oriented Technologies and Systems (COOTS'98)","author":"Depauw W.","unstructured":"Depauw , W. , Lorenz , D. , Vlissides , J. , and Wegman , M . 1998. Execution patterns in object-oriented visualization . In Proceedings of the USENIX Conference on Object-Oriented Technologies and Systems (COOTS'98) . 219--234. Depauw, W., Lorenz, D., Vlissides, J., and Wegman, M. 1998. Execution patterns in object-oriented visualization. In Proceedings of the USENIX Conference on Object-Oriented Technologies and Systems (COOTS'98). 219--234."},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1002\/1096-9128(20001210)12:14<1431::AID-CPE542>3.0.CO;2-2"},{"key":"e_1_2_1_10_1","volume-title":"Proceedings of the Static Analysis Symposium (SAS'00)","author":"Dor N.","unstructured":"Dor , N. , Rodeh , M. , and Sagiv , S . 2000. Checking cleanness in linked lists . In Proceedings of the Static Analysis Symposium (SAS'00) . 115--134. Dor, N., Rodeh, M., and Sagiv, S. 2000. Checking cleanness in linked lists. In Proceedings of the Static Analysis Symposium (SAS'00). 115--134."},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1273463.1273480"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1453101.1453111"},{"key":"e_1_2_1_13_1","unstructured":"Ej-Technologies Gmbh. 2013. JProfiler. http:\/\/www.ej-technologies.com.  Ej-Technologies Gmbh. 2013. JProfiler. http:\/\/www.ej-technologies.com."},{"key":"e_1_2_1_14_1","unstructured":"Gupta S. C. and Palanki R. 2005. Java memory leaks -- Catch me if you can. http:\/\/www.ibm.com\/developerworks\/rational\/library\/05\/0816_GuptaPalanki\/.  Gupta S. C. and Palanki R. 2005. Java memory leaks -- Catch me if you can. http:\/\/www.ibm.com\/developerworks\/rational\/library\/05\/0816_GuptaPalanki\/."},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1040305.1040331"},{"key":"e_1_2_1_16_1","volume-title":"Proceedings of the Winter USENIX Conference. 125--138","author":"Hastings R.","unstructured":"Hastings , R. and Joyce , B . 1992. Purify: A tool for detecting memory leaks and access errors in c and c&plus;&plus; programs . In Proceedings of the Winter USENIX Conference. 125--138 . Hastings, R. and Joyce, B. 1992. Purify: A tool for detecting memory leaks and access errors in c and c&plus;&plus; programs. In Proceedings of the Winter USENIX Conference. 125--138."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1024393.1024412"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/781131.781150"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1134285.1134321"},{"key":"e_1_2_1_20_1","unstructured":"Jikes Research Virtual Machine. 2013. http:\/\/jikesrvm.org.  Jikes Research Virtual Machine. 2013. http:\/\/jikesrvm.org."},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190224"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.v40:1"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1835804.1835822"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1007\/11785477_5"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03013-0_5"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2010.7"},{"key":"e_1_2_1_27_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming (ECOOP'03)","author":"Mitchell N.","unstructured":"Mitchell , N. and Sevitsky , G . 2003. Leakbot: An automated and lightweight tool for diagnosing memory leaks in large java applications . In Proceedings of the European Conference on Object-Oriented Programming (ECOOP'03) . 351--377. Mitchell, N. and Sevitsky, G. 2003. Leakbot: An automated and lightweight tool for diagnosing memory leaks in large java applications. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP'03). 351--377."},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297046"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1007\/11785477_25"},{"key":"e_1_2_1_30_1","unstructured":"Nicholas E. 2006. http:\/\/weblogs.java.net\/blog\/enicholas\/archive\/2006\/04\/leaking evil.html.  Nicholas E. 2006. http:\/\/weblogs.java.net\/blog\/enicholas\/archive\/2006\/04\/leaking evil.html."},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542521"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1007\/11823230_26"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1109\/HPCA.2005.29"},{"key":"e_1_2_1_34_1","unstructured":"Quest Software. 2013. JProbe memory debugging. http:\/\/www.quest.com\/jprobe.  Quest Software. 2013. JProbe memory debugging. http:\/\/www.quest.com\/jprobe."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1321631.1321661"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542522"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.5555\/647476.727764"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/1449764.1449775"},{"key":"e_1_2_1_39_1","unstructured":"Standard Performance Evaluation Corporation. 2000. SPECjbb2000. http:\/\/www.spec.org\/jbb2000.  Standard Performance Evaluation Corporation. 2000. SPECjbb2000. http:\/\/www.spec.org\/jbb2000."},{"key":"e_1_2_1_40_1","unstructured":"Sun Bug Database. 2013. http:\/\/bugs.sun.com\/bugdatabase.  Sun Bug Database. 2013. http:\/\/bugs.sun.com\/bugdatabase."},{"key":"e_1_2_1_41_1","doi-asserted-by":"crossref","unstructured":"Vallee-Rai R. Gagnon E. Hendren L. Lam P. Pominville P. and Sundaresan V. 2000. Optimizing java bytecode using the soot framework: Is it feasible&quest; In Proceedings of the International Conference on Compiler Construction (CC'00). 18--34.   Vallee-Rai R. Gagnon E. Hendren L. Lam P. Pominville P. and Sundaresan V. 2000. Optimizing java bytecode using the soot framework: Is it feasible&quest; In Proceedings of the International Conference on Compiler Construction (CC'00). 18--34.","DOI":"10.1007\/3-540-46423-9_2"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/1985793.1985938"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1081706.1081728"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542523"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806596.1806617"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1882362.1882448"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993530"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/1368088.1368110"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806596.1806616"},{"key":"e_1_2_1_51_1","volume-title":"Proceedings of the International Conference on Software Engineering (ICSE'12)","author":"Yan D.","unstructured":"Yan , D. , Xu , G. , and Rountev , A . 2012. Uncovering performance problems in java applications with reference propagation profiling . In Proceedings of the International Conference on Software Engineering (ICSE'12) . Yan, D., Xu, G., and Rountev, A. 2012. Uncovering performance problems in java applications with reference propagation profiling. In Proceedings of the International Conference on Software Engineering (ICSE'12)."}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2491509.2491511","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2491509.2491511","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T07:28:50Z","timestamp":1750231730000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2491509.2491511"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2013,7]]},"references-count":50,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2013,7]]}},"alternative-id":["10.1145\/2491509.2491511"],"URL":"https:\/\/doi.org\/10.1145\/2491509.2491511","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2013,7]]},"assertion":[{"value":"2011-11-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2012-03-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2013-07-30","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}