【发布时间】:2017-02-27 22:20:17
【问题描述】:
以下情况会导致内存泄漏吗?
案例 1
在这里,我没有使用 new 运算符,所以当我们不使用 new 运算符并将 object1 分配给 object2 时,我不确定它在 Java 中是如何工作的。
public void doSomething() {
String a1 = "Hello";
String a2;
while(true) {
a2 = a1;
}
}
案例 2
这里,
public void doSomething() {
String a1 = new String("Hello");
String a2;
while(true) {
a2 = new String(a1);
}
}
【问题讨论】:
-
两者都不会导致内存泄漏。第二个示例可能让垃圾收集器保持忙碌。
-
1) 不,分配对另一个变量的引用不会分配更多空间。 2) 不,只要在下一次迭代中覆盖引用,就可以对循环的每次迭代中创建的新字符串进行垃圾收集。它会触发多次 GC 运行,以释放空间,但不会泄漏内存。
标签: java memory-leaks