垃圾回收

1.对象引用超过其作用范围

2.将对象赋值为null;

{
    Example e = new Example();
    e = null;        
}

  虽然垃圾回收机制已经很完善,但垃圾回收器只能回收那些由new操作符创建的对象。某些对象不通过new操作符在内存中获取存储空间的,这种对象无法被垃圾回收机制所识别。在Java中提供了finalize()方法,这个方法是Object类的方法,它被声明为protected,用户可以在自己的类中定义这个方法,如果用户在类中定义了finalize()方法,在垃圾回收时会首先调用该方法,在下一次回收动作发生时,才会真正回收被对象占用的内存。

  需要说明的是,垃圾回收或finalize()方法不保证一定会发生。如果Java虚拟机内存损耗殆尽,它将不会指向垃圾回收处理。

  由于垃圾回收不受人为控制,具体时间也不确定,所以finalize()方法也就无法执行。为此,Java提供了System.gc()方法来强制启动垃圾回收器。

原文地址:https://www.cnblogs.com/sunzhongyu008/p/11284599.html