如何在Java中创建内存泄漏?示例与原因
大家好。我是一名Java初学者,经常听说Java有垃圾回收器(GC)可以自动清理内存。但有人告诉我,即使有GC也可能发生内存泄漏(memory leak)。我试图理解这是如何可能的,但我找到的所有示例要么太复杂,要么使用了旧版本的Java。
我需要写一个小的教学项目来演示内存泄漏,以便更好地理解垃圾回收器的工作原理,并在实际工作中避免此类问题。我尝试过在循环中创建大量对象而不保存引用——但GC会清理它们。如何让对象保留在内存中而不被删除?
以下是我尝试过的示例,但它没有导致泄漏:
```java
public class MemoryLeakTest {
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 1000000; i++) {
String s = new String("test" + i);
}
System.gc();
Thread.sleep(100