Java 垃圾收集之终结

在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);
	}
}

 

最简单方法就是用一个强引用对象引用作为一个弱引用类型构造参数,然后得到的对象引用就是一个弱引用类型对象,如上边代码。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值