On effectiveness of GC in Java

Abstract
We study the eectiveness of garbage collection (GC) algo- rithms by measuring the time dierence between the actual collection time of an object and the potential earliest collec- tion time for that object. Our ultimate goal is to use this study in order to develop static analysis techniques that can be used together with GC to allow earlier reclamation of ob- jects. The results may also be used to pinpoint application source code that could be rewritten in a way that would allow more timely GC. Specically, we compare the objects reachable from the root set to the ones that are actually used again. The idea is that GC could reclaim unused objects even if they are reachable from the root set. Thus, our experiments indicate a kind of upper bound on storage savings that could be achieved. We also try to characterize these objects in order to understand the potential benets of various static analysis algorithms. The Java Virtual Machine (JVM) was instrumented to mea- sure objects that are reachable, but not used again, and to characterize these objects. Experimental results are shown for the SPECjvm98 benchmark suite. The potential mem- ory savings for these benchmarks range from 23% to 74%.