当前位置: 技术问答>java相关
scjp的垃圾回收几个小东东
来源: 互联网 发布时间:2015-02-18
本文导语: 1.public static void main(String args[]) { 2. Object o=new Float(12.4f); 3. Object []oa=new Object[1]; 4. oa[0]=o; 5. o=null; 6. oa[0]=null; 7. return o; 8.} Where will be the garbage collecter may invoke? a) just after line no.5 b) just after line no.6...
1.public static void main(String args[]) {
2. Object o=new Float(12.4f);
3. Object []oa=new Object[1];
4. oa[0]=o;
5. o=null;
6. oa[0]=null;
7. return o;
8.}
Where will be the garbage collecter may invoke?
a) just after line no.5
b) just after line no.6
c) just after line no.7
d) never invokes
e) compilation error
Ans B //为何a不行?
1. class sreejith
2. {
3. public static void main(String args[])
4. {
5. String s="hello";
6. String s1="hello";
7. System.out.println(s1);
8. String s3=s1;
9. s1=null;
10. s=null;
11. }
Which line the garbage collector will invoke first?Ans: never invoke in this method 怎莫解释?
2. Object o=new Float(12.4f);
3. Object []oa=new Object[1];
4. oa[0]=o;
5. o=null;
6. oa[0]=null;
7. return o;
8.}
Where will be the garbage collecter may invoke?
a) just after line no.5
b) just after line no.6
c) just after line no.7
d) never invokes
e) compilation error
Ans B //为何a不行?
1. class sreejith
2. {
3. public static void main(String args[])
4. {
5. String s="hello";
6. String s1="hello";
7. System.out.println(s1);
8. String s3=s1;
9. s1=null;
10. s=null;
11. }
Which line the garbage collector will invoke first?Ans: never invoke in this method 怎莫解释?
|
java里垃圾回收的机制是没有句炳指向对象的时候,garbage collector才会调用。1中
oa[0]仍然指向你创建的对象,所以5行没有回收。2同理
oa[0]仍然指向你创建的对象,所以5行没有回收。2同理
|
垃圾回收机制,只没有指向分配的对象的句柄时才被使用。
对于第一题:oa[0]与o都是指向new Float(12.4f)的句柄,所以,只用当两者都不在引用对象时(就是两者都为null时)才进行回收。对于第二题,由于对象是静态分配的,当函数完成,对象脱离作用域后将自动释放,就不用垃圾回收劳神了。
对于第一题:oa[0]与o都是指向new Float(12.4f)的句柄,所以,只用当两者都不在引用对象时(就是两者都为null时)才进行回收。对于第二题,由于对象是静态分配的,当函数完成,对象脱离作用域后将自动释放,就不用垃圾回收劳神了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。