1,Object aobj = new Object(); //实例1
2,Object bobj = new Object(); //实例2
3,Object cobj = new Object(); //实例3
4,aobj=bobj; //bobj变量地址值赋值给aobj,此时aobj bobj 同时指向实例2.aobj原指向的实例1就被回收. 此时就剩下实例2,3
5,aobj=cobj; //cobj变量地址值赋值给aobj, aobj cobj 都指向实例3. bobj不变.这一步没有垃圾回收.
6, cobj=null; //由于第5步有 aobj cobj 都指向实例3. 这边即时cobj=null.还有aobj指向.所以这步也没有垃圾回收.
7, aobj=null; // 6, 7 把aobj cobj 都设为null 实例3就被回收了.
所以后面就只剩下一个实例2,也就bobj类变量在栈内存中存储着实例2的首地址.
|