为了账号安全,请及时绑定邮箱和手机立即绑定

Java垃圾收集器-什么时候收集?

Java垃圾收集器-什么时候收集?

MM们 2019-11-18 18:11:40
是什么决定了垃圾收集器何时真正收集?它是在一定时间之后还是在一定数量的内存用完之后发生的吗?还是还有其他因素?
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

当JVM没有足够的内存空间来运行时,垃圾收集器将运行并删除不必要的对象,并为JVM分配内存。


不必要的对象是没有引用(地址)的对象。


符合垃圾收集器条件的对象主要有4点。


空引用


当对象的引用变量的值分配为null时,垃圾收集器可以删除该对象


    A a = new A();

    a = null;

重新分配


当将另一个对象分配给对象的引用变量时,较旧的引用对象可以由垃圾回收器删除。


  A a = new A(100);

  a =new A(200);

当地范围


如果在块内创建对象,则该对象可以在该块外进行垃圾回收。


  if(condition){


     A a = new A();


  }

隔离


一个对象可以引用另一个对象,但是堆栈中的这些对象必须至少有一个引用(地址)变量,否则所有这些对象都可以进行垃圾回收。


      class A{

            A r;

            A(int i){

             //something   

           }

      } 


      A a1 = new A(100);

      a1.r = new A(101);

      a1.r.r = new A(102);

      a1.r.r.r = a1;


      a1  = null //all ojects are eligible to garbage collector  


查看完整回答
反对 回复 2019-11-18
  • 3 回答
  • 0 关注
  • 485 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信