LeakBot: An Automated and Lightweight Tool for Diagnosing Memory Leaks in Large Java Applications

Despite Java’s automatic reclamation of memory, memory leaks remain an important problem. For example, we frequently encounter memory leaks that cause production servers to crash. These servers represent an increasingly common class of Java applications: they are large scale and they make heavy use of frameworks. For these applications, existing tools require too much expertise, and, even for experts, require many hours interpreting low-level details. In addition, they are often too expensive to use in practice. We present an automated, adaptive, and scalable tool for diagnosing memory leaks, called LeakBot.

[1]  G. Ramalingam,et al.  On loops, dominators, and dominance frontiers , 2002, TOPL.

[2]  Elliot K. Kolodner,et al.  Automatic Removal of Array Memory Leaks in Java , 2000, CC.

[3]  Nick Mitchell,et al.  Visualizing the Execution of Java Programs , 2001, Software Visualization.

[4]  Sudheendra Hangal,et al.  Tracking down software bugs using automatic anomaly detection , 2002, ICSE '02.

[5]  Raimondas Lencevicius,et al.  On-the-fly query-based debugging with examples , 2000, AADEBUG.

[6]  Gary Sevitsky,et al.  Visualizing reference patterns for solving memory leaks in Java , 1999, Concurr. Pract. Exp..

[7]  Martin C. Rinard,et al.  ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), November 2002 Ownership Types for Safe Programming: Preventing Data Races and Deadlocks , 2022 .

[8]  Mooly Sagiv,et al.  Estimating the impact of heap liveness information on space consumption in Java , 2002, ISMM '02.

[9]  David R. Barach,et al.  A technique for finding storage allocation errors in C-language programs , 1982, SIGP.

[10]  Niklas Röjemo,et al.  New dimensions in heap profiling , 1996, Journal of Functional Programming.

[11]  Jin Song Dong,et al.  The Geometry of Object Containment , 1994 .

[12]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[13]  Barry Hayes,et al.  Using key object opportunism to collect old objects , 1991, OOPSLA '91.

[14]  Amer Diwan,et al.  Understanding the connectivity of heap objects , 2002, ISMM '02.

[15]  James Noble,et al.  Simple Ownership Types for Object Containment , 2001, ECOOP.

[16]  David Detlefs,et al.  Garbage collection and local variable type-precision and liveness in Java virtual machines , 1998, PLDI.

[17]  Marvin V. Zelkowitz,et al.  Programming Languages: Design and Implementation , 1975 .

[18]  Gary Sevitsky,et al.  Visualizing reference patterns for solving memory leaks in Java , 1999, Concurr. Pract. Exp..

[19]  Andrew W. Appel,et al.  Traversal-based visualization of data structures , 1998, Proceedings IEEE Symposium on Information Visualization (Cat. No.98TB100258).

[20]  Amer Diwan,et al.  On the Usefulness of Liveness for Garbage Collection and Leak Detection , 2001, ECOOP.

[21]  Nicholas Kassem,et al.  Java 2 platform, enterprise editionアプリケーション設計ガイド , 2001 .

[22]  Niklas Röjemo,et al.  Lag, drag, void and use—heap profiling and space-efficient compilation revisited , 1996, ICFP '96.

[23]  Robert O. Hastings,et al.  Fast detection of memory leaks and access errors , 1991 .