Avatar ·

如何在Java中创建内存泄漏?代码示例与解释

大家好!我是一名初学Java的开发者,对内存管理这个话题非常感兴趣。我知道Java有垃圾收集器(Garbage Collector),它会自动释放没有引用指向的对象所占用的内存。但有人告诉我,即使是在Java中,如果编写代码不够谨慎,也可能造成内存泄漏。 我试图理解这究竟是如何发生的。我写了一个简单的例子,但不确定是否正确。代码如下: ```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()); } } } ``` 这段代码显然会导致OutOfMemoryError,因为我们无限地向静态列表中添加对象。但这更像是“溢出”,而不是泄漏。我感兴趣的是更微妙的情况,即GC无法回收那些我们认为已经不再需要的对象。