{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,18]],"date-time":"2025-11-18T12:16:34Z","timestamp":1763468194644,"version":"3.41.0"},"reference-count":76,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2014,5,1]],"date-time":"2014-05-01T00:00:00Z","timestamp":1398902400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/100000144","name":"Division of Computer and Network Systems","doi-asserted-by":"publisher","award":["CCF-0546040, CCF-1017204, CCF-1319695, and CNS-1321179"],"award-info":[{"award-number":["CCF-0546040, CCF-1017204, CCF-1319695, and CNS-1321179"]}],"id":[{"id":"10.13039\/100000144","id-type":"DOI","asserted-by":"publisher"}]},{"DOI":"10.13039\/100000143","name":"Division of Computing and Communication Foundations","doi-asserted-by":"publisher","award":["CCF-0546040, CCF-1017204, CCF-1319695, and CNS-1321179"],"award-info":[{"award-number":["CCF-0546040, CCF-1017204, CCF-1319695, and CNS-1321179"]}],"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":[[2014,5]]},"abstract":"<jats:p>Many large-scale Java applications suffer from runtime bloat. They execute large volumes of methods and create many temporary objects, all to execute relatively simple operations. There are large opportunities for performance optimizations in these applications, but most are being missed by existing optimization and tooling technology. While JIT optimizations struggle for a few percent improvement, performance experts analyze deployed applications and regularly find gains of 2\u00d7 or more. Finding such big gains is difficult, for both humans and compilers, because of the diffuse nature of runtime bloat. Time is spread thinly across calling contexts, making it difficult to judge how to improve performance. Our experience shows that, in order to identify large performance bottlenecks in a program, it is more important to understand its dynamic dataflow than traditional performance metrics, such as running time.<\/jats:p>\n          <jats:p>\n            This article presents a general framework for designing and implementing scalable analysis algorithms to find causes of bloat in Java programs. At the heart of this framework is a generalized form of runtime dependence graph computed by\n            <jats:italic>abstract dynamic slicing<\/jats:italic>\n            , a semantics-aware technique that achieves high scalability by performing dynamic slicing over bounded abstract domains. The framework is instantiated to create two independent dynamic analyses,\n            <jats:italic>copy profiling<\/jats:italic>\n            and\n            <jats:italic>cost-benefit analysis<\/jats:italic>\n            , that help programmers identify performance bottlenecks by identifying, respectively, high-volume copy activities and data structures that have high construction cost but low benefit for the forward execution.\n          <\/jats:p>\n          <jats:p>We have successfully applied these analyses to large-scale and long-running Java applications. We show that both analyses are effective at detecting inefficient operations that can be optimized for better performance. We also demonstrate that the general framework is flexible enough to be instantiated for dynamic analyses in a variety of application domains.<\/jats:p>","DOI":"10.1145\/2560047","type":"journal-article","created":{"date-parts":[[2014,5,27]],"date-time":"2014-05-27T12:56:59Z","timestamp":1401195419000},"page":"1-50","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":14,"title":["Scalable Runtime Bloat Detection Using Abstract Dynamic Slicing"],"prefix":"10.1145","volume":"23","author":[{"given":"Guoqing","family":"Xu","sequence":"first","affiliation":[{"name":"University of California, Irvine, CA"}]},{"given":"Nick","family":"Mitchell","sequence":"additional","affiliation":[{"name":"IBM T.J. Watson Research Center, Yorktown Heights, NY"}]},{"given":"Matthew","family":"Arnold","sequence":"additional","affiliation":[{"name":"IBM T.J. Watson Research Center, Yorktown Heights, NY"}]},{"given":"Atanas","family":"Rountev","sequence":"additional","affiliation":[{"name":"Ohio State University, Columbus, OH"}]},{"given":"Edith","family":"Schonberg","sequence":"additional","affiliation":[{"name":"IBM T.J. Watson Research Center, Yorktown Heights, NY"}]},{"given":"Gary","family":"Sevitsky","sequence":"additional","affiliation":[{"name":"IBM T.J. Watson Research Center, Yorktown Heights, NY"}]}],"member":"320","published-online":{"date-parts":[[2014,6,2]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/93542.93576"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/582419.582448"},{"volume-title":"Proceedings of the European Conference on Object-Oriented Programming (ECOOP'04)","author":"Ammons G.","key":"e_1_2_1_3_1","unstructured":"G. Ammons , J.-D. Choi , M. Gupta , and N. Swamy . 2004. Finding and removing performance bottlenecks in large systems . In Proceedings of the European Conference on Object-Oriented Programming (ECOOP'04) . 172--196. G. Ammons, J.-D. Choi, M. Gupta, and N. Swamy. 2004. Finding and removing performance bottlenecks in large systems. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP'04). 172--196."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2004.840305"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1449764.1449776"},{"volume-title":"Proceedings of the International Symposium on Microarchitecture (MICRO'96)","author":"Ball T.","key":"e_1_2_1_6_1","unstructured":"T. Ball and J. Larus . 1996. Efficient path profiling . In Proceedings of the International Symposium on Microarchitecture (MICRO'96) . 46--57. T. Ball and J. Larus. 1996. Efficient path profiling. In Proceedings of the International Symposium on Microarchitecture (MICRO'96). 46--57."},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167488"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2005.16"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1168857.1168866"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297035"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297057"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/604131.604156"},{"volume-title":"Proceedings of the International Conference on Parallel Architectures and Compilation Techniques (PACT'03)","author":"Burtscher M.","key":"e_1_2_1_13_1","unstructured":"M. Burtscher and M. Jeeradit . 2003. Compressing extended program traces using value predictors . In Proceedings of the International Conference on Parallel Architectures and Compilation Techniques (PACT'03) . 159--169. M. Burtscher and M. Jeeradit. 2003. Compressing extended program traces using value predictors. In Proceedings of the International Conference on Parallel Architectures and Compilation Techniques (PACT'03). 159--169."},{"volume-title":"Proceedings of the International Symposium on Microarchitecture (MICRO'97)","author":"Calder B.","key":"e_1_2_1_14_1","unstructured":"B. Calder , P. Feller , and A. Eustace . 1997. Value profiling . In Proceedings of the International Symposium on Microarchitecture (MICRO'97) . 259--269. B. Calder, P. Feller, and A. Eustace. 1997. Value profiling. In Proceedings of the International Symposium on Microarchitecture (MICRO'97). 259--269."},{"volume-title":"Proceedings of the Annual Computer Security Applications Conference (ACSAC'07)","author":"Chandra D.","key":"e_1_2_1_16_1","unstructured":"D. Chandra and M. Franz . 2007. Fine-grained information flow analysis and enforcement in a java virtual machine . In Proceedings of the Annual Computer Security Applications Conference (ACSAC'07) . 463--475. D. Chandra and M. Franz. 2007. Fine-grained information flow analysis and enforcement in a java virtual machine. In Proceedings of the Annual Computer Security Applications Conference (ACSAC'07). 463--475."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/378795.378840"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/582419.582447"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1273463.1273490"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949320"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/1273463.1273480"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1453101.1453111"},{"key":"e_1_2_1_23_1","unstructured":"Ej-Technologies Gmbh. 2011. JProfiler. http:\/\/www.ej-technologies.com.  Ej-Technologies Gmbh. 2011. JProfiler. http:\/\/www.ej-technologies.com."},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1109\/CSAC.2005.21"},{"volume-title":"Proceedings of the International Conference on Software Engineering (ICSE'12)","author":"Han S.","key":"e_1_2_1_25_1","unstructured":"S. Han , Y. Dang , S. Ge , D. Zhang , and T. Xie . 2012. Performance debugging in the large via mining millions of stack traces . In Proceedings of the International Conference on Software Engineering (ICSE'12) . 145--155. S. Han, Y. Dang, S. Ge, D. Zhang, and T. Xie. 2012. Performance debugging in the large via mining millions of stack traces. In Proceedings of the International Conference on Software Engineering (ICSE'12). 145--155."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/781131.781150"},{"key":"e_1_2_1_27_1","unstructured":"J9 Java Virtual Machine. 2011. The j9 java virtual machine. http:\/\/wiki.eclipse.org\/J9.  J9 Java Virtual Machine. 2011. The j9 java virtual machine. http:\/\/wiki.eclipse.org\/J9."},{"volume-title":"Proceedings of the International Symposium on Microarchitecture (MICRO'97)","author":"Jacobson Q.","key":"e_1_2_1_28_1","unstructured":"Q. Jacobson , E. Rotenberg , and J. E. Smith . 1997. Path-based next trace prediction . In Proceedings of the International Symposium on Microarchitecture (MICRO'97) . 14--23. Q. Jacobson, E. Rotenberg, and J. E. Smith. 1997. Path-based next trace prediction. In Proceedings of the International Symposium on Microarchitecture (MICRO'97). 14--23."},{"key":"e_1_2_1_29_1","unstructured":"Java Development Blog. 2009. Java development blog.cld.blog-city.com.  Java Development Blog. 2009. Java development blog.cld.blog-city.com."},{"key":"e_1_2_1_30_1","unstructured":"Java Heap Analyzer Tool. 2014. Java heap analyzer tool (hat). http:\/\/hat.dev.java.net.  Java Heap Analyzer Tool. 2014. Java heap analyzer tool (hat). http:\/\/hat.dev.java.net."},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1016\/0164-1212(90)90094-3"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/301618.301678"},{"volume-title":"Proceedings of the International Symposium on Microarchitecture (MICRO'96)","author":"Lipasti M. H.","key":"e_1_2_1_34_1","unstructured":"M. H. Lipasti and J. P. Shen . 1996. Exceeding the dataflow limit via value prediction . In Proceedings of the International Symposium on Microarchitecture (MICRO'96) . 226--237. M. H. Lipasti and J. P. Shen. 1996. Exceeding the dataflow limit via value prediction. In Proceedings of the International Symposium on Microarchitecture (MICRO'96). 226--237."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/1138912.1138927"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/1571629.1571631"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1044834.1044835"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1007\/11785477_5"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2010.7"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297027.1297046"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/11785477_25"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2007.10.010"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/1254810.1254820"},{"volume-title":"Proceedings of the Annual Network and Distributed System Security Symposium (NDSS'05)","author":"Newsome J.","key":"e_1_2_1_44_1","unstructured":"J. Newsome and D. Song . 2005. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software . In Proceedings of the Annual Network and Distributed System Security Symposium (NDSS'05) . J. Newsome and D. Song. 2005. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software. In Proceedings of the Annual Network and Distributed System Security Symposium (NDSS'05)."},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491411.2491416"},{"volume-title":"Proceedings of the International Conference on Software Engineering (ICSE'13)","author":"Nistor A.","key":"e_1_2_1_46_1","unstructured":"A. Nistor , L. Song , D. Marinov , and S. Lu . 2013. Toddler: Detecting performance problems via similar memory-access patterns . In Proceedings of the International Conference on Software Engineering (ICSE'13) . 562--571. A. Nistor, L. Song, D. Marinov, and S. Lu. 2013. Toddler: Detecting performance problems via similar memory-access patterns. In Proceedings of the International Conference on Software Engineering (ICSE'13). 562--571."},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2006.29"},{"key":"e_1_2_1_48_1","unstructured":"Quest Software. 2011. JProbe memory debugging. http:\/\/www.quest.com\/jprobe.  Quest Software. 2011. JProbe memory debugging. http:\/\/www.quest.com\/jprobe."},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/1321631.1321661"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/503272.503287"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542522"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/1449764.1449775"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/53990.54007"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/1250734.1250748"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/1081706.1081730"},{"key":"e_1_2_1_56_1","unstructured":"Sun Java Forum. 2014. http:\/\/forums.java.net\/jive\/thread.jspa&quest;messageID&equals;180784.  Sun Java Forum. 2014. http:\/\/forums.java.net\/jive\/thread.jspa&quest;messageID&equals;180784."},{"key":"e_1_2_1_57_1","first-page":"121","article-title":"A survey of program slicing techniques","volume":"3","author":"Tip F.","year":"1995","unstructured":"F. Tip . 1995 . A survey of program slicing techniques . J. Program. Lang. 3 , 121 -- 189 . F. Tip. 1995. A survey of program slicing techniques. J. Program. Lang. 3, 121--189.","journal-title":"J. Program. Lang."},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/1190216.1190268"},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/1330017.1330021"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/2483760.2483784"},{"key":"e_1_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384616.2384690"},{"key":"e_1_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_1"},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509136.2509512"},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/1806596.1806617"},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542523"},{"key":"e_1_2_1_67_1","doi-asserted-by":"publisher","DOI":"10.1145\/1882362.1882448"},{"key":"e_1_2_1_68_1","doi-asserted-by":"publisher","DOI":"10.1145\/1368088.1368110"},{"volume-title":"Proceedings of the 15th USENIX Security Symposium. 121--136","author":"Xu W.","key":"e_1_2_1_69_1","unstructured":"W. Xu , S. Bhatkar , and R. Sekar . 2006. Taint-enhanced policy enforcement: A practical approach to defeat a wide range of attacks . In Proceedings of the 15th USENIX Security Symposium. 121--136 . W. Xu, S. Bhatkar, and R. Sekar. 2006. Taint-enhanced policy enforcement: A practical approach to defeat a wide range of attacks. In Proceedings of the 15th USENIX Security Symposium. 121--136."},{"volume-title":"Proceedings of the International Conference on Software Engineering (ICSE'12)","author":"Yan D.","key":"e_1_2_1_70_1","unstructured":"D. Yan , G. Xu , and A. Rountev . 2012. Uncovering performance problems in java applications with reference propagation profiling . In Proceedings of the International Conference on Software Engineering (ICSE'12) . 134--144. D. Yan, G. Xu, and A. Rountev. 2012. Uncovering performance problems in java applications with reference propagation profiling. In Proceedings of the International Conference on Software Engineering (ICSE'12). 134--144."},{"key":"e_1_2_1_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/581888.581894"},{"key":"e_1_2_1_73_1","doi-asserted-by":"publisher","DOI":"10.1145\/1133981.1134002"},{"key":"e_1_2_1_74_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.v37:9"},{"key":"e_1_2_1_75_1","doi-asserted-by":"publisher","DOI":"10.1145\/996841.996855"},{"key":"e_1_2_1_76_1","doi-asserted-by":"publisher","DOI":"10.1109\/MICRO.2004.37"},{"volume-title":"Proceedings of the International Conference on Software Engineering (ICSE'03)","author":"Zhang X.","key":"e_1_2_1_77_1","unstructured":"X. Zhang , R. Gupta , and Y. Zhang . 2003. Precise dynamic slicing algorithms . In Proceedings of the International Conference on Software Engineering (ICSE'03) . 319--329. X. Zhang, R. Gupta, and Y. Zhang. 2003. Precise dynamic slicing algorithms. In Proceedings of the International Conference on Software Engineering (ICSE'03). 319--329."},{"key":"e_1_2_1_78_1","doi-asserted-by":"publisher","DOI":"10.1145\/1181775.1181786"},{"key":"e_1_2_1_79_1","doi-asserted-by":"publisher","DOI":"10.1145\/378795.378835"},{"volume-title":"Proceedings of the International Conference on Compiler Construction (CC'02)","author":"Zhang Y.","key":"e_1_2_1_80_1","unstructured":"Y. Zhang and R. Gupta . 2002. Data compression transformations for dynamically allocated data structures . In Proceedings of the International Conference on Compiler Construction (CC'02) . 14--28. Y. Zhang and R. Gupta. 2002. Data compression transformations for dynamically allocated data structures. In Proceedings of the International Conference on Compiler Construction (CC'02). 14--28."}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2560047","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2560047","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T08:10:21Z","timestamp":1750234221000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2560047"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2014,5]]},"references-count":76,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2014,5]]}},"alternative-id":["10.1145\/2560047"],"URL":"https:\/\/doi.org\/10.1145\/2560047","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"type":"print","value":"1049-331X"},{"type":"electronic","value":"1557-7392"}],"subject":[],"published":{"date-parts":[[2014,5]]},"assertion":[{"value":"2013-01-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2013-12-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2014-06-02","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}