作者SusanTakumi (〒△〒被水桶了...)
看板java
标题[问题] 资源回收的问题
时间Sat May 12 16:48:26 2012
Dear 大家,
这题是 SCJP JAVA 6.0 的习题
@@" 看半天还是不知道为什麽
所以上来请教大家一下
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;
// 做一些事情
}
}
当程式执行到"做一些事情",有多少物件有资格被资源回收?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 5
答案:
B 是正确的。
很清楚的,
a2 有指涉到一个物件,
a2.b2有指涉到一个物件。
可能比较看不清楚的是,
你仍然可能透过 a2.b1 这个静态变数来存取另外一个 Beta 物件,
因为那个变数是静态的。
...
解答如上所示
但是它没有交代的是
究竟是那一个变数有资格被资源回收?
所以我一直不是很了解
感谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.167.86.193
1F:→ TonyQ:不是 variable 有资格被回收,是 instance 有资格被回收。 05/12 16:56
3F:→ chunhsiang:画图就很容易知道 只要看哪块记忆体不可能在被参照到 05/12 20:01