Utilizing Object Reference Graphs and Garbage Collection Roots to Detect Memory Leaks in Offline Memory Monitoring
Sprache des Vortragstitels:
Englisch
Original Tagungtitel:
15th International Conference on Managed Languages & Runtimes (ManLang'18)
Sprache des Tagungstitel:
Englisch
Original Kurzfassung:
Complex software systems often suffer from performance problems
caused by memory anomalies such as memory leaks. While the
proliferation of objects is rather easy to detect using state-of-theart memory monitoring tools, extracting a leak?s root cause, i.e.,
identifying the objects that keep the accumulating objects alive,
is still poorly supported. Most state-of-the-art tools rely on the
dominator tree of the object graph and thus only support singleobject ownership analysis. Multi-object ownership analysis, e.g.,
when the leaking objects are contained in multiple collections, is
not possible by merely relying on the dominator tree. We present
an efficient approach to continuously collect GC root information
(e.g., static fields or thread-local variables) in a trace-based memory
monitoring tool, as well as algorithms that use this information to
calculate the transitive closure (i.e., all reachable objects) and the
GC closure (i.e., objects that are kept alive) for arbitrary heap object
groups. These closures allow to derive various metrics for heap
object groups that can be used to guide the user during memory
leak analysis. We implemented our approach in AntTracks, an
offline memory monitoring tool, and demonstrate its usefulness
by comparing it with other widely used tools for memory leak
detection such as the Eclipse Memory Analyzer. Our evaluation
shows that collecting GC root information tracing introduces about
1% overhead, in terms of run time as well as trace file size.