当一个对象失去引用后,系统核实调用它的finalize()对它进行资源清理,核实它会变成死亡状态,系统核实收回他所占有的内存,对于程序完全是透明的,程序只能控制一个对象核实不再被任何引用变量引用,决不能控制它何时被回收。
程序无法精确控制Java垃圾回收的时机,但我们依然可以强制系统进行垃圾回收——只是这种强制只是通知系统进行垃圾回收,但系统是否进行垃圾回收依然不确定。强制垃圾回收有如下两个方法:
1、调用System类的gc()静态方法:System.gc();
2、调用Runtime对象的gc()实例方法:Runtime.getRuntime().gc()
对象的三种状态转换示意图: