Avatar ·

Como criar um vazamento de memória em Java? Exemplos de código e explicação

Olá a todos! Sou um desenvolvedor Java iniciante e estou muito interessado no tópico de gerenciamento de memória. Eu sei que em Java existe um Garbage Collector que libera automaticamente a memória de objetos que não têm referências. Mas me disseram que mesmo em Java é possível criar um vazamento de memória se escrever código descuidadamente. Estou tentando entender como exatamente isso acontece. Escrevi um exemplo simples, mas não tenho certeza se está correto. Aqui está o 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á um OutOfMemoryError, porque estamos adicionando objetos infinitamente a uma lista estática. Mas isso é mais um "estouro" do que um vazamento. Estou interessado em aprender sobre casos mais sutis, onde o GC não consegue coletar objetos, embora pensemos que eles não são mais necessários.