有如下问题,请大家解释一下,谢谢:
- Java code
interface Animal{ void makeNoise();}class Horse implements Animal{ Long weight=1200L; public void makeNoise(){ System.out.println("vinny"); }}public class lcelandic extends Horse{ /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here lcelandic i1=new lcelandic(); lcelandic i2=new lcelandic(); lcelandic i3=new lcelandic(); i3=i1;i1=i2;i2=null;i3=i1; }}
问:When line 14(也就是 i3=i1;i1=i2;i2=null;i3=i1;)is reached ,how many objects are eligible for the garbage collector?
答案是2个,但我不知道为什么,请高手解答一下
------解决方案--------------------
设i1 i2 i3代表的内存区域分别为A B C
i3=i1; //i3 i1均引用A C没有被引用
i1=i2; // i1 和i2均引用B
i2=null; // i1指向B
i3=i1; //i3和i1均引用B A没被引用
A和C会被收集