PhD Defense: Determining When Objects Die to Improve Garbage Collection
Despite much effort, garbage collection in Java is still not perfect. Although it frees programmers from the burden of manually freeing objects that will no longer be used, and eliminates many common programming errors, it comes with a significant performance penalty. This penalty can become particularly great when memory is constrained.
This thesis introduces two pieces of work to address this problem. The first is Elephant Tracks, a tool that uses novel techniques to measure memory properties of Java programs, producing traces with enough information to determine the calling context in which objects die.
The second is the Deferred Garbage collector. Built based on observations from the Elephant Tracks traces, the Deferred Garbage Collector reduces redundant work performed by the garbage collector. Avoiding this redundant work can result in significant performance improvement in some programs.