垃圾回收的三道SUN认证题,谁来给出答案并解释一下结果

ghosert 2004-07-29 04:18:12
12. Given the following,
1. class X2 {
2. public X2 x;
3. public static void main(String [] args) {
4. X2 x2 = new X2();
5. X2 x3 = new X2();
6. x2.x = x3;
7. x3.x = x2;
8. x2 = new X2();
9. x3 = x2;
10. doComplexStuff();
11. }
12. }
after line 9 runs, how many objects are eligible for garbage collection?
A. 0
B. 1
C. 2
D. 3
E. 4


14. Given the following,
12. X3 x2 = new X3();
13. X3 x3 = new X3();
14. X3 x5 = x3;
15. x3 = x2;
16. X3 x4 = x3;
48 Chapter 7: Objects and Collections
17. x2 = null;
18. // insert code
what two lines of code, inserted independently at line 18, will make an object eligible for
garbage collection? (Choose two.)
A. x3 = null;
B. x4 = null;
C. x5 = null;
D. x3 = x4;
E. x5 = x4;


15. Given the following,
12. void doStuff3() {
13. X x = new X();
14. X y = doStuff(x);
15. y = null;
16. x = null;
17. }
18. X doStuff(X mx) {
19. return doStuff2(mx);
20. }
at what point is the object created in line 13 eligible for garbage collection?
A. After line 15 runs
B. After line 16 runs
C. After line 17 runs
D. The object is not eligible.
E. It is not possible to know for sure.
...全文
192 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
registered 2004-07-30
  • 打赏
  • 举报
回复
第二题解释比较详细就不赘述了
第一题:
虽然有
6. x2.x = x3;
7. x3.x = x2;
引用了这两个对象, 但是经过
8. x2 = new X2();
9. x3 = x2;
这两个对象的所属对象已经失去了引用, 所以可以被 gc() 了

第三题:
因为不能确定 doStuff2(X x) 的主体
不知道里面有没有将这个对象加入某个容器(假设)等类似保留对象的操作
所以不能确定
TinyJimmy 2004-07-30
  • 打赏
  • 举报
回复
12. 虽然在
X3 x2 = new X3();
X3 x3 = new X3();
X3 x5 = x3;
x3 = x2;
产生了一个循环引用, 但是这两个对象最后都没有被其他对象引用, 是可以gc的

15.
可以排除法, 证明x/y可以被引用或不被引用
agen10120216 2004-07-30
  • 打赏
  • 举报
回复
学习了
ghosert 2004-07-29
  • 打赏
  • 举报
回复
TinyJimmy 都做对了,不过能不能再具体解释一下
agen10120216 2004-07-29
  • 打赏
  • 举报
回复
12题

4.产生X2的instance1
5.产生X2的instance2
6,7把两个实例转移到两个属性上
8.产生新实例instance3
9.让x3也指向instance3
答案是a,因为没有对象丢失

14题

x2 ----> instance 1
x3 ----> instance 2
x5 ----> instance 2
x3 ----> instance 1
x4 ----> instance 1
x2 ----> null

a. x3 ----> null(此时有x4指向instance 1)
b. x4 ----> null(此时有x3指向instance 1)
c. x5 ----> null(造成instance 2没有引用指向)
d. x3 ----> instance 1(不会产生变化)
e. x5 ----> instance 1(造成instance 2没有引用指向)
所以答案是c,e

15题

答案是b,16行让13行产生的对象丢失

我的答案和 TinyJimmy 稍有差异,如有错误,欢迎指正.
TinyJimmy 2004-07-29
  • 打赏
  • 举报
回复
12. Given the following,
c
第一次创建的x2和x3都可以被gc了

14
c/e
上述的结果x2=x3=x4, x5=null和x5=x4都能造成一个对象没有被引用

15
e
不能确定doStuff2(X x) 有没有保存引用
孙亖 2004-07-29
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/TopicView1.asp?id=3222720
baffling 2004-07-29
  • 打赏
  • 举报
回复
gz

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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