Avatar ·

Cómo crear una fuga de memoria en Java? Ejemplos de código y explicación

¡Hola a todos! Soy un desarrollador Java principiante y me interesa mucho el tema de la gestión de memoria. Sé que en Java hay un Garbage Collector que libera automáticamente la memoria de los objetos a los que no hay referencias. Pero me dijeron que incluso en Java se puede crear una fuga de memoria si se escribe descuidadamente. Estoy tratando de entender cómo ocurre exactamente. Escribí un ejemplo simple, pero no estoy seguro de que sea correcto. Aquí está el código: ```java import java.util.ArrayList; import java.util.List; public class MemoryLeakExample { private static List list = new ArrayList<>(); public static void main(String[] args) { while (true) { list.add(new Object()); } } } ``` Este código, obviamente, causará un OutOfMemoryError, porque estamos agregando objetos infinitamente a una lista estática. Pero esto es más un "desbordamiento" que una fuga. Me interesa conocer casos más sutiles donde el GC no puede recolectar objetos, aunque pensamos que ya no son necesarios.