java垃圾回收代码


public class GcTest
{
	public static void main(String[] args)
	{
		for (int i = 0 ; i < 4; i++)
		{
			new GcTest();
			// 下面两行代码的作用完全相同,强制系统进行垃圾回收
			// System.gc();
			Runtime.getRuntime().gc();
		}
	}
	public void finalize()
	{
		System.out.println("系统正在清理GcTest对象的资源...");
	}
}
java -verbose:gc GcTest

        finalize()方法具有如下4个特点:
        永远不要主动调用某个对象的finalize()方法,该方法交给垃圾回收机制调用。
        finalize()方法何时被调用,是否被调用具有不确定性,不要把finalize()方法当成一定会被执行的方法。
        当JVM执行可恢复对象的finalize()方法时,可能使该对象或系统中其他对象重新变成可达状态。
        当JVM执行finalize()方法时出现异常时,垃圾回收机制不会报告异常,程序继续执行。


public class FinalizeTest
{
	private static FinalizeTest ft = null;
	public void info()
	{
		System.out.println("测试资源清理的finalize方法");
	}
	public static void main(String[] args) throws Exception
	{
		// 创建FinalizeTest对象立即进入可恢复状态
		new FinalizeTest();
		// 通知系统进行资源回收
//		System.gc();  //①
		// 强制垃圾回收机制调用可恢复对象的finalize()方法
//		Runtime.getRuntime().runFinalization();   //②
		System.runFinalization();   //③
		ft.info();
	}
	public void finalize()
	{
		// 让tf引用到试图回收的可恢复对象,即可恢复对象重新变成可达
		ft = this;
	}
}

java对象的强引用,软引用,弱引用,虚引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值