请教一道SCJP的题目,关于垃圾回收的,请各位前辈多多指教

xlmaxlma 2009-06-10 06:15:35
Given:
3. interface Animal{void makeNoise();}
4. class Horse implements Animal{
5. Long weight = 1200L;
6. public void makeNoise(){System.out.println("whinny");}
7. }
8. public class lcelandic extends Horse{
9. public void makeNoise(){System.out.println("vinny");}
10. public static void main(String[] args) {
11. Icelandic i1 = new lcelandic();
12. Icelandic i2 = new lcelandic();
13. Icelandic i3 = new lcelandic();
14. i3 = i1; i1 = i2; i2 = null; i3 = i1;
15. }
16. }
When line 14 is reached, how many objects are eligible for the garbage collector?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6

答案是 C

可小弟我认为是E,理由是除了2个lcelandic需回收外,2个lcelandic中继承到的Long weight需要要回收,故应该4个呀
请各位老师指导!
...全文
121 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
邵钏 2009-06-25
  • 打赏
  • 举报
回复
TestInside SUN 310-065:

248. 已知:
3. interface Animal { void makeNoise(); }
4. class Horse implements Animal {
5. Long weight = 1200L;
6. public void makeNoise() { System.out.println("whinny"); }
7. }
8. public class Icelandic extends Horse {
9. public void makeNoise() { System.out.println("vinny"); }
10. public static void main(String[] args) {
11. Icelandic i1 = new Icelandic();
12. Icelandic i2 = new Icelandic();
13. Icelandic i3 = new Icelandic();
14. i3 = i1; i1 = i2; i2 = null; i3 = i1;
15. }
16. }
到達第 15 行時,有多少個物件能資源回收?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
Answer: E
lovecj6185 2009-06-23
  • 打赏
  • 举报
回复
学习了
zhangfei2007cumt 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yejinson 的回复:]
如果是问你有多少个对象就打4个, 如果考你的是lcelandic就2个
Long weight = 1200L 可能改为long wight = 1200L;
[/Quote]
请问具体是那四个对象???感觉很晕!!!
hyhymn 2009-06-11
  • 打赏
  • 举报
回复
学习。
xlmaxlma 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 cgaolei 的回复:]
再支持你一下。祝你考试顺利。
[/Quote]
谢谢这位大哥!
xlmaxlma 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 weiluo12 的回复:]
i3 = i1; ----------i3指向的对象没有被引用                     
                      i3指向了i1所执行的对象

i1 = i2; ----------i1指向了i2所指向的对象

i2 = null;---------i2没有指向任何对象


i3 = i1; ----------此时i1执行了指向的i2开始指向的对象
                      i3此时也指向了i2开始指向的对象
                      i1开始执行的对象没有被引用
综上所述:
有资格被回收的…
[/Quote]

对的,问题是此2个对象在heap中还建有2个Long对象,因为这里是Long,用的包装器;如果是long那又是另一回事了

问题是此时Long不会自动解包的呀,Long依旧还一个对象,所以我认为是4个对象,请各位老师指正
yejinson 2009-06-10
  • 打赏
  • 举报
回复
如果是问你有多少个对象就打4个, 如果考你的是lcelandic就2个
Long weight = 1200L 可能改为long wight = 1200L;
cgaolei 2009-06-10
  • 打赏
  • 举报
回复
再支持你一下。祝你考试顺利。
cgaolei 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xlmaxlma 的回复:]
引用 5 楼 cgaolei 的回复:
你的想法实际没错,也可以这么去争辩,但是有点想的太多了。 当回收一个对象时,其下的所有实例都要被回收,2个Icelandic中的Long是指定要被回收的。但真正要考你的是Iclandic 1和3要被回收,所以是2个。

题目出的也有问题,不够严谨。这不会是官方正试的题吧???还是练习题?练习题可能不够严谨还能说的过去。要是正式题也这么出,这道题应该review一下了。。呵呵


是练习题,估计是和您说…
[/Quote]

正式考题都是很严谨的,像这类题都只会有唯一的答案,你可以放心。正式题都是一遍遍筛出来的。。
weiluo12 2009-06-10
  • 打赏
  • 举报
回复
i3 = i1; ----------i3指向的对象没有被引用
i3指向了i1所执行的对象

i1 = i2; ----------i1指向了i2所指向的对象

i2 = null;---------i2没有指向任何对象


i3 = i1; ----------此时i1执行了指向的i2开始指向的对象
i3此时也指向了i2开始指向的对象
i1开始执行的对象没有被引用
综上所述:
有资格被回收的对象是i1、i3指向的对象!
xlmaxlma 2009-06-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cgaolei 的回复:]
你的想法实际没错,也可以这么去争辩,但是有点想的太多了。 当回收一个对象时,其下的所有实例都要被回收,2个Icelandic中的Long是指定要被回收的。但真正要考你的是Iclandic 1和3要被回收,所以是2个。

题目出的也有问题,不够严谨。这不会是官方正试的题吧???还是练习题?练习题可能不够严谨还能说的过去。要是正式题也这么出,这道题应该review一下了。。呵呵
[/Quote]

是练习题,估计是和您说的一样,但愿考试别遇到这种模棱两可的题目吧
cgaolei 2009-06-10
  • 打赏
  • 举报
回复
你的想法实际没错,也可以这么去争辩,但是有点想的太多了。 当回收一个对象时,其下的所有实例都要被回收,2个Icelandic中的Long是指定要被回收的。但真正要考你的是Iclandic 1和3要被回收,所以是2个。

题目出的也有问题,不够严谨。这不会是官方正试的题吧???还是练习题?练习题可能不够严谨还能说的过去。要是正式题也这么出,这道题应该review一下了。。呵呵
ly1595 2009-06-10
  • 打赏
  • 举报
回复
SCJP这么变态?
xlmaxlma 2009-06-10
  • 打赏
  • 举报
回复

大家都吃饭去啦?
xlmaxlma 2009-06-10
  • 打赏
  • 举报
回复
各位老师帮忙看看呀
xlmaxlma 2009-06-10
  • 打赏
  • 举报
回复
自己顶一下

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧