w*********n 发帖数: 439 | 1 class Beta { ... }
class Alpha {
static Beta b1;
Beta b2;
}
public class Tester {
public static void main (String [ ] args) {
Beta b1 = new Beta();
Beta b2 = new Beta();
Alpha a1 = new Alpha();
Alpha a2 = new Alpha();
a1.b1 = b1;
a1.b2 = b1;
a2.b2 = b2;
a1 = null;
b1 = null;
b2 = null;
}
}
问题:在上面的a1, a2, b1, b2中哪几个对象会被gc回收? | x***4 发帖数: 1815 | 2 B1 is in permanent so it will not be gc.
A2 is not gc before the end of main.
B2 is not gc because a2 has a link to it.
a1 can be gc.
错了别怪我。 | w*********n 发帖数: 439 | 3 b1 为什么是permanent?是因为a1.b1 = b1 吗? | s***a 发帖数: 43 | 4 亲, 因为它是静态成员变量,与类同在。这也是为什么有时即使只需要创建一次也不用
静态
的原因, 占内存, 清不掉。
【在 w*********n 的大作中提到】 : b1 为什么是permanent?是因为a1.b1 = b1 吗?
| w*********n 发帖数: 439 | | s***a 发帖数: 43 | 6 二楼说的对, 俺水平有限, 只能给他做做补充。
【在 w*********n 的大作中提到】 : suiya,你帮我看看这道题目吧
|
|