Source Code Analysis: A Road Map
FOSE '07 2007 Future of Software Engineering
WODA '07 Proceedings of the 5th International Workshop on Dynamic Analysis
The causes of bloat, the limits of health
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Heapviz: interactive heap visualization for program understanding and debugging
Proceedings of the 5th international symposium on Software visualization
HI-C: diagnosing object churn in framework-based applications
Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering
Ontology model-based static analysis of security vulnerabilities
ICICS'11 Proceedings of the 13th international conference on Information and communications security
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Identifying dynamic data structures by learning evolving patterns in memory
TACAS'13 Proceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Data Linkage Algebra, Data Linkage Dynamics, and Priority Rewriting
Fundamenta Informaticae
Hi-index | 0.00 |
Analysis of dynamic data structure usage is useful for both program understanding and for improving the accuracy of other program analyses. Static analysis techniques, however, suffer from reduced accuracy in complex situations, and do not necessarily give a clear picture of runtime heap activity. We have designed and implemented a dynamic heap analysis system that allows one to examine and analyze how Java programs build and modify data structures. Using a complete execution trace from a profiled run of the program, we build an internal representation that mirrors the evolving runtime data structures. The resulting series of representations can then be analyzed and visualized, and we show how to use our approach to help understand how programs use data structures, the precise effect of garbage collection, and to establish limits on static data structure analysis. A deep understanding of dynamic data structures is particularly important for modern, object-oriented languages that make extensive use of heapbased data structures.