¿Cómo forzar la recolección de basura en Java?

Resuelto asked hace 15 años • 0 respuestas

¿Es posible forzar la recolección de basura en Java, incluso si es complicado de hacer? Lo sé System.gc();y Runtime.gc();solo sugieren hacer GC. ¿Cómo puedo forzar GC?

 avatar Sep 26 '09 20:09
Aceptado

Su mejor opción es llamar, System.gc()lo cual simplemente es una pista para el recolector de basura de que desea que realice una recolección. Sin embargo, no hay forma de forzar la recolección inmediata ya que el recolector de basura no es determinista.

Andrew Hare avatar Sep 26 '2009 13:09 Andrew Hare

La biblioteca jlibs tiene una buena clase de utilidad para la recolección de basura . Puedes forzar la recolección de basura usando un pequeño truco ingenioso con objetos WeakReference .

RuntimeUtil.gc() de 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();
     }
   }
shams avatar Aug 02 '2011 16:08 shams