java垃圾回收到底是怎么执行??

JavaDengDeng 发布于 2009/10/02 22:09
阅读 306
收藏 0

class A{
          A a;
          public A(A a){
               this.a=a;
          }
          public static void main(String args[]){
               A a1=null;
               A a2=new A(new A(null));
               A a3=new A(a2);
               a1=a3;
               a1.a=new A(null);
               a2.a=null;  //Line12
               System.gc();
          }
     }

请问:第12行执行之后有多少个对象可以进行垃圾回收??我是初学者,能不能用一个图描绘一下整个的执行过程?

加载中
0
Diablo.Wu
Diablo.Wu

即使你调用了System.gc();也不会马上执行垃圾回收,只是通知一下jvm。虚拟机真的去做gc的时候要去判断对象和jvm的状态,自行去做垃圾回收

0
J
JavaDengDeng

引用来自“Diablo.Wu”的帖子

即使你调用了System.gc();也不会马上执行垃圾回收,只是通知一下jvm。虚拟机真的去做gc的时候要去判断对象和jvm的状态,自行去做垃圾回收

谢谢楼上的回答。

这个我知道,程序员是不能进行垃圾回收的,调用System.gc();只是建议java虚拟机可以进行回收了。但是现在我的问题是运行了第12行之后有多少个对象符合了垃圾回收的条件,而不是有多少个对象(已经)进行了垃圾回收。

0
黄平俊
黄平俊

a1=null,置null就符合了垃圾回收的条件了~~~下次垃圾回收时就把a1给收了~~

返回顶部
顶部