Static detection of dynamic memory errors
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Escape analysis: correctness proof, implementation and experimental results
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Uniprocessor Garbage Collection Techniques
IWMM '92 Proceedings of the International Workshop on Memory Management
Execution patterns in object-oriented visualization
COOTS'98 Proceedings of the 4th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 4
Visualizing the Execution of Java Programs
Revised Lectures on Software Visualization, International Seminar
Visualising Objects: Abstraction, Encapsulation, Aliasing, and Ownership
Revised Lectures on Software Visualization, International Seminar
Behavioral profiles—a way to model and validate program behavior
Software—Practice & Experience
AllocRay: memory allocation visualization for unmanaged languages
Proceedings of the 5th international symposium on Software visualization
Heapviz: interactive heap visualization for program understanding and debugging
Proceedings of the 5th international symposium on Software visualization
A map of the heap: revealing design abstractions in runtime structures
Proceedings of the 5th international symposium on Software visualization
Towards anomaly comprehension: using structural compression to navigate profiling call-trees
Proceedings of the 5th international symposium on Software visualization
ISVC'11 Proceedings of the 7th international conference on Advances in visual computing - Volume Part I
VM-level memory monitoring for resolving performance problems
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Hi-index | 0.00 |
Many Java programmers believe they do not have to worry about memory management because of automatic garbage collection. In fact, many Java programs run out of memory unexpectedly after performing a number of operations. A memory leak in Java is caused when an object that is no longer needed cannot be reclaimed because another object is still referring to it. Memory leaks can be difficult to solve, since the complexity of most programs prevents us from manually verifying the validity of every reference. In this paper we show a new methodology for finding the causes of memory leaks. We have identified a basic memory leak scenario which fits many important cases. In this scenario, we allow the programmer to identify a period of time in which temporary objects are expected to be created and released. Using this information we are able to identify objects that persist beyond this period and the references which are holding on to them. Scaling this methodology to real-world systems brings additional challenges. We propose a novel combination of visual syntax and reference pattern extraction to manage this additional complexity. We also describe how these techniques can be applied to a wider class of memory problems, including the exploration of large data structures. These techniques have been implemented and have been proven successful on large projects.