下面这段创建的对象o什么时候可能被垃圾回收掉??
public class X{
public object m(){
object o=new float(3.14f);
object[] oa=new object[1];
oa[0]=o;
o=null;
oa[0]=null;
return o;
}
}

解决方案 »

  1.   

    oa[0]=null;  在这句的时候可能被GC掉
      

  2.   

    Java的垃圾回收器是一个低优先级的线程。当Java确定程序不再引用某一对象时,便在该对象上做个标记用于最终的垃圾回收。当然了,垃圾回收器只有在处理器空闲且没有更高优先级的可运行线程时才激活。然而,当系统中已没有空闲内存时,垃圾回收器会自动运行。将对象引用设置为null就是标记该对象可以用于最终的垃圾回收了!
      

  3.   

    说的好,即使你显示调用System.gc(),java虚拟机也不一定会立即执行垃圾回收,也可以说,垃圾回收是不可以人工干预的
      

  4.   

    Java的垃圾回收器其实在内存中有自己的堆栈结构
    来保存那些是程序不再引用的对象的引用--至于怎么的到的-cup其实保留这个一份所有对象的引用值.Java的垃圾回收器是一个低优先级的线程垃圾回收器只有在处理器空闲且没有更高优先级的可运行线程时才激活。然而,当系统中已没有空闲内存时,垃圾回收器会自动运行
    在回收时会调用finalize()这个方法,每个对象都有这个方法-都是继承object类的.
    当然也可以定时的来控制回收 system.runFinalizetion(); system.gc();
    却无法控制控制器何时不运行垃圾回收器
      

  5.   

    对的,gc()只是向JVM建议进行回收
      

  6.   

    其实 c#的垃圾回收机制和java的一样