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

是什么决定了垃圾收集器何时真正收集?它是在一定时间之后还是在一定数量的内存用完之后发生的吗?还是还有其他因素?



MM们
浏览 486回答 3
3回答

慕桂英3389331

当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  
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java