在Java中一个对象可以拥有终结方法:这个方法是垃圾收集器在释放对象前必须运行的。这个方法的存在使JVM工作更加复杂。
以下就是一个包含终结的垃圾收集过程图:
对象可触及的生命周期:
在JDK1.2之前,对垃圾收集器来说,堆中每一个对象都有三种状态:可触及,可复活,不可触及。
在JDk1.2中和之后,对垃圾收集器来说,队中状态变为:强可触及,软可触及,弱可触及,影子触及。
引用对象:
可触及性三个比较弱形式设计到从新版本开始新引入的实体--引用对象。引用对象封装了指向其他对象的链接,被指向的对象成为引用目标,所有引用对象都是抽象的java.lang.ref.Reference类的子类的实例。Reference类直接包含三个子类
强引用和较弱形式的引用(软引用,弱引用,影子引用)之间最基本的差别是,强引用禁止引用目标被垃圾收集,而较弱形式引用不禁止。
如果创建还一个较弱形式对象?
import java.lang.ref.Reference;
import java.lang.ref.SoftReference;
public class ReferenceTest {
public static void main(String[] args) {
ReferenceTest test = new ReferenceTest(); // 强引用test
// 将一个强引用对象作为弱引用类型构造参数,那么下面的reference就是ReferenceTest类型的一个弱引用对象
Reference<ReferenceTest> reference = new SoftReference<ReferenceTest>(test);
System.out.println(reference);
}
}
最简单方法就是用一个强引用对象引用作为一个弱引用类型构造参数,然后得到的对象引用就是一个弱引用类型对象,如上边代码。