作者LPH66 (-858993460)
看板java
标题Re: [问题] 关於 Garbage Collection
时间Mon Oct 24 15:35:19 2011
※ 引述《mserway (mserway)》之铭言:
: 大家好。
: 询问的是当程式执行到 第 18 行,有多少个物件有资格被资源回收(GC)。
: 3. class Beta {}
: 4. class Alpha {
: 5. static Beta b1;
: 6. Beta b2;
: 7. }
: 8. public class Tester {
: 9. public static void main(String [] args) {
: 10. Beta b1 = new Beta();
: 11. Beta b2 = new Beta();
: 12. Alpha a1 = new Alpha();
: 13. Alpha a2 = new Alpha();
: 14. a1.b1 = b1;
: 15. a1.b2 = b1;
: 16. a2.b2 = b2;
: 17. a1 = null; b1 = null; b2 = null;
: 18. // do stuff
: 19. }
: 20. }
: 此题为 "SCJP 6 专业认证手册" 的题目,第284页 第11题
: 解答为 "只有一个物件" 有资格被资源回收。
: 解释如下3点 :
: 1) a2 有指涉到一个物件;
: 2) a2.b2有指涉到一个物件;
: 3) 仍然可能透过 a2.b1 这个静态变数来存取另一个 Beta 物件。
: 我的问题是 : 哪个物件有资格被资源回收? a1 或是 b1 指涉的物件?
: b1 原先指涉的 Beta 物件可否被 a1.b1 (静态变数)存取?
: 觉得自己在这部分上有盲点,希望有兴趣的朋友可以给予一点帮助~ 谢谢!
总共有四个实体被 new 出来
为方便起见依照 new 它出来的行数分别叫做 B10 B11 A12 A13
那麽他的解释就可以这麽改写:
1) A13 仍被 a2 参考;
2) B11 仍被 a2.b2 参考;
3) B10 仍被 a2.b1 参考. (其实以 A.b1 亦可使用到 B10 此实体)
於是可被回收的是 A12
这样有把问题搞懂了吗?
--
い
ああオレたちには见えてるモノがあるbデ きっと谁にも夺われないモノがあるはずさ
け
开口一番一虚一実跳梁跋扈形影相吊yュL羊头狗肉东奔西走国士无双南柯之梦 歪も
ぶ
意味がないと思えるコトがある ラPきっとでも意図はそこに必ずある んの
く
依依恋恋空前絶後疾风怒涛有无相生 ラH急転直下物情骚然愚者一得相思相爱 だが
ろ
无意味じゃない ラ6あの意図が 恋た
で
有为転変死生有命苍天已死黄天当立 !!6五里雾中解散宣言千错万综则天去私 のり
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.30.135
1F:推 mserway:所以说 A12 和 A13 的 b1 其实是指向同一个 B10~ 10/24 16:25
2F:推 mserway:我懂了!! 感谢你的帮助~ 10/24 16:27
3F:→ LPH66:严格说来一楼不太对 那"两个" b1 是同一个变数 10/24 23:12
4F:→ LPH66:那是因为宣告为静态的关系 所以它其实就是 A.b1 10/24 23:14
5F:推 mserway:再次受教了! L大让我观念更清楚了 :D 10/25 00:16