How to force garbage collection in Java? How to force garbage collection in Java? java java

How to force garbage collection in Java?


Your best option is to call System.gc() which simply is a hint to the garbage collector that you want it to do a collection. There is no way to force and immediate collection though as the garbage collector is non-deterministic.


The jlibs library has a good utility class for garbage collection. You can force garbage collection using a nifty little trick with WeakReference objects.

RuntimeUtil.gc() from the jlibs:

   /**    * This method guarantees that garbage collection is    * done unlike <code>{@link System#gc()}</code>    */   public static void gc() {     Object obj = new Object();     WeakReference ref = new WeakReference<Object>(obj);     obj = null;     while(ref.get() != null) {       System.gc();     }   }


The best (if not only) way to force a GC would be to write a custom JVM. I believe the Garbage collectors are pluggable so you could probably just pick one of the available implementations and tweak it.

Note: This is NOT an easy answer.