class Alpha{
static Beta b1;
Beta b2;
}
public class Tester{
public static void main(String[] args){
Beta b1=new Beta(); Beta b2=new Beta();
Alpha a1=new Alpha(); Alpha a2=new Alpha();
a1.b1=b1;
a1.b2=b1;
a1.b2=b2;
a1=nill; b1=null; b2=nill;
//do stuff
}
}
问题:When line 16 is reached,how many objects will be eligible for garbage collection?
求各位大大解释,晚上结贴给分
9 个解决方案
#1
问题的英文是不是问·有多少个对象被创建出来?
如果是的话我的回答是·4个··如果不是··请楼主翻译一下先··英文太烂了··
如果是的话我的回答是·4个··如果不是··请楼主翻译一下先··英文太烂了··
#2
额……有多少个对象符合垃圾回收被准
#3
垃圾回收标准
#4
看见gc了
#5
是2个,b2,a1.这两个都好理解,因为这两个属性都是对象属性,所以,当执行a1=null,b2=null后,都变为垃圾了。可能难理解的是也执行了b1=null,那么b1为什么不是垃圾对象呢?原因是还有Alpha的类属性b1指向他,所以b1这个对象,并不是垃圾对象!
#6
来迟了一步···让这兄弟先说了··
#7
#8
SCJP给出的答案是1,不过看了你的话后明白了b1的问题,就是不晓得b2,a1中哪个不是垃圾对象。
#9
难道是a2隐含存在可以调用b2,所以b2不是垃圾对象,d2=null这句话完全没用的?
#1
问题的英文是不是问·有多少个对象被创建出来?
如果是的话我的回答是·4个··如果不是··请楼主翻译一下先··英文太烂了··
如果是的话我的回答是·4个··如果不是··请楼主翻译一下先··英文太烂了··
#2
额……有多少个对象符合垃圾回收被准
#3
垃圾回收标准
#4
看见gc了
#5
是2个,b2,a1.这两个都好理解,因为这两个属性都是对象属性,所以,当执行a1=null,b2=null后,都变为垃圾了。可能难理解的是也执行了b1=null,那么b1为什么不是垃圾对象呢?原因是还有Alpha的类属性b1指向他,所以b1这个对象,并不是垃圾对象!
#6
来迟了一步···让这兄弟先说了··
#7
#8
SCJP给出的答案是1,不过看了你的话后明白了b1的问题,就是不晓得b2,a1中哪个不是垃圾对象。
#9
难道是a2隐含存在可以调用b2,所以b2不是垃圾对象,d2=null这句话完全没用的?