¿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?
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.
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();
}
}