当前位置: 技术问答>java相关
询问:关于JAVA的garbage collector
来源: 互联网 发布时间:2015-02-03
本文导语: 大家先看看这道题目: class Happy { public static void main(String args[]) { Happy h=new Happy(); h.methodA(); } Object methodA() { Object obj1=new Object(); Object []Obj2=new Object[1]; obj2[0]=obj1; obj1=null; return obj2...
大家先看看这道题目:
class Happy {
public static void main(String args[]) {
Happy h=new Happy();
h.methodA();
}
Object methodA() {
Object obj1=new Object();
Object []Obj2=new Object[1];
obj2[0]=obj1;
obj1=null;
return obj2[0];
}
}
Where will be the most chance of garbage collector invoked?
a) After line no.9
b) After line no.10
c) After line no.11
d) Garbage collector never invoked in this method.
e) Compilation error.
其实一般来说,JAVA是在什么情况下会自动调用GC呢?
谢谢
class Happy {
public static void main(String args[]) {
Happy h=new Happy();
h.methodA();
}
Object methodA() {
Object obj1=new Object();
Object []Obj2=new Object[1];
obj2[0]=obj1;
obj1=null;
return obj2[0];
}
}
Where will be the most chance of garbage collector invoked?
a) After line no.9
b) After line no.10
c) After line no.11
d) Garbage collector never invoked in this method.
e) Compilation error.
其实一般来说,JAVA是在什么情况下会自动调用GC呢?
谢谢
|
同意ender的说法,即GC的自动调用发生在下列情况:
1。想要在java堆分配中分配新的空间,却发现空间不够;
2。分配永久对象时;
但是不能选d,因为不能保证在程序中不出现内存空间不够的情况;由于这里问的是最可能出现自动调用GC的地方,因此每一个new都有嫌疑,不理解为什么会选a,他没有给出解释吗?
BTW:此程序编译通不过,Object []Obj2=new Object[1]; 中的Obj2应为obj2。
1。想要在java堆分配中分配新的空间,却发现空间不够;
2。分配永久对象时;
但是不能选d,因为不能保证在程序中不出现内存空间不够的情况;由于这里问的是最可能出现自动调用GC的地方,因此每一个new都有嫌疑,不理解为什么会选a,他没有给出解释吗?
BTW:此程序编译通不过,Object []Obj2=new Object[1]; 中的Obj2应为obj2。
|
应该选D,因为函数中new 了两个对象,一个是Object对象obj1,一个是Object类型的数组对象obj2,并且将数组的第一个成员指向obj1,然后返回数组的第一个成员,所以没有对象在这个函数的调用中会(或者说有可能)被回收。GC的调用是不确定的,不是内存不够就去回收没有用的对象,ender(ender)第二句说错了,具体你可以参考java的文档。
网上有人说选a,但网上的答案并不能保证,他并没有说出理由,是吗?好多Mock Exam上的答案都有错的!
网上有人说选a,但网上的答案并不能保证,他并没有说出理由,是吗?好多Mock Exam上的答案都有错的!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。