Java对象的销毁

来源:互联网 发布:session生命周期 php 编辑:程序博客网 时间:2024/05/22 05:24

Java对象的销毁

每个对象都有生命周期,当对象的生命周期结束时,分配给对象的内存地址将会被回收。

何种对象会被java虚拟机视为垃圾:

(1)对象引用超过其作用范围,这个对象被视为垃圾

{

Example e = new Example();

}

在大括号之外的范围,就被视为超过e的作用范围。

(2)将对象赋值为null

{

Example e = new Example();

e = null;

}

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

说明:有一点需要明确的是,垃圾回收和finalize()方法不保证一定会发生,如Java虚拟机内存损耗待尽时,它是不会执行垃圾回收的。那怎么办呢?Java提供了System.gc()方法强制启动垃圾回收器。