Affiliation:
1. University of California, Irvine, CA
2. IBM T.J. Watson Research Center, Yorktown Heights, NY
3. Ohio State University, Columbus, OH
Abstract
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× 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.
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
abstract dynamic slicing
, 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,
copy profiling
and
cost-benefit analysis
, 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.
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.
Funder
Division of Computer and Network Systems
Division of Computing and Communication Foundations
International Business Machines Corporation
Publisher
Association for Computing Machinery (ACM)
Cited by
17 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Coverage-Based Debloating for Java Bytecode;ACM Transactions on Software Engineering and Methodology;2023-04-04
2. Studying and Understanding the Tradeoffs Between Generality and Reduction in Software Debloating;Proceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering;2022-10-10
3. OJXPerf;Proceedings of the 44th International Conference on Software Engineering;2022-05-21
4. Prioritising test scripts for the testing of memory bloat in web applications;IET Software;2022-03-03
5. Subdomain-based generality-aware debloating;Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering;2020-12-21