On the effectiveness of GC in Java

Ran Shaham, Elliot K. Kolodner, Mooly Sagiv

Research output: Contribution to journalArticlepeer-review


We study the effectiveness of garbage collection (GC) algorithms by measuring the time difference between the actual collection time of an object and the potential earliest collection 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 objects. The results may also be used to pinpoint application source code that could be rewritten in a way that would allow more timely GC. Specifically, 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 benefits of various static analysis algorithms. The Java Virtual Machine (JVM) was instrumented to measure objects that are reachable, but not used again, and to characterize these objects. Experimental results are shown for the SPECjvm98 benchmark suite. The potential memory savings for these benchmarks range from 23% to 74%. Copyright ACM 2000.

Original languageEnglish
Pages (from-to)12-17
Number of pages6
JournalACM SIGPLAN Notices
Issue number1
StatePublished - Jan 2001


  • Compilers
  • Garbage collection
  • Java
  • Memory management
  • Program analysis


Dive into the research topics of 'On the effectiveness of GC in Java'. Together they form a unique fingerprint.

Cite this