Affiliation:
1. IIT Bombay, Mumbai, India
Abstract
Despite significant progress in the theory and practice of program analysis, analyzing properties of heap data has not reached the same level of maturity as the analysis of static and stack data. The spatial and temporal structure of stack and static data is well understood while that of heap data seems arbitrary and is unbounded. We devise bounded representations that summarize properties of the heap data. This summarization is based on the structure of the program that manipulates the heap. The resulting summary representations are certain kinds of graphs called
access graphs
. The boundedness of these representations and the monotonicity of the operations to manipulate them make it possible to compute them through data flow analysis.
An important application that benefits from heap reference analysis is garbage collection, where currently liveness is conservatively approximated by reachability from program variables. As a consequence, current garbage collectors leave a lot of garbage uncollected, a fact that has been confirmed by several empirical studies. We propose the first ever end-to-end static analysis to distinguish live objects from reachable objects. We use this information to make dead objects unreachable by modifying the program. This application is interesting because it requires discovering data flow information representing complex semantics. In particular, we formulate the following new analyses for heap data: liveness, availability, and anticipability and propose solution methods for them. Together, they cover various combinations of directions of analysis (i.e., forward and backward) and confluence of information (i.e. union and intersection). Our analysis can also be used for plugging memory leaks in C/C++ languages.
Publisher
Association for Computing Machinery (ACM)
Reference42 articles.
1. Garbage collection and local variable type-precision and liveness in Java virtual machines
2. Escape analysis for object-oriented languages
3. Escape analysis for Java
TM
4. Boehm H. 2007. An artificial garbage collection benchmark. http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_bench.html Accessed: September 2007. Boehm H. 2007. An artificial garbage collection benchmark. http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_bench.html Accessed: September 2007.
Cited by
26 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Demand-driven Information Flow Analysis of WebView in Android Hybrid Apps;2023 IEEE 34th International Symposium on Software Reliability Engineering (ISSRE);2023-10-09
2. Understanding the Impact of Fingerprinting in Android Hybrid Apps;2023 IEEE/ACM 10th International Conference on Mobile Software Engineering and Systems (MOBILESoft);2023-05
3. Memory leak detection using Heap Object Flow Graph (HOFG);16th Innovations in Software Engineering Conference;2023-02-23
4. Inferring Region Types via an Abstract Notion of Environment Transformation;Programming Languages and Systems;2022
5. Eagle;ACM Transactions on Software Engineering and Methodology;2021-10-31