首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

深入懂得ReferenceQueue GC finalize Reference

2012-11-03 
深入理解ReferenceQueue GC finalize Reference?转载自 ---- http://zhang-xzhi-xjtu.iteye.com/blog/4131

深入理解ReferenceQueue GC finalize Reference

?

转载自 ---- http://zhang-xzhi-xjtu.iteye.com/blog/413159

?

目录

概述
1 先看一个对象finalize的顺序问题。
2 对象再生及finalize只能执行一次
3 SoftReference WeakReference
4 PhantomReference
5 ReferenceQueue
Q&A


概述

先说一些基本的东西,GC只负责对象内存相关的清理,其他资源如文件句柄,db连接需要手动清理,以防止系统资源不足崩溃。System.gc()只是建议jvm执行GC,但是到底GC执行与否是由jvm决定的。

一个正常的对象的生命周期。

当新建一个对象时,会置位该对象的一个内部标识finalizable,当某一点GC检查到该对象不可达时,就把该对象放入finalize queue(F queue),GC会在对象销毁前执行finalize方法并且清空该对象的finalizable标识。

简而言之,一个简单的对象生命周期为,Unfinalized Finalizable Finalized Reclaimed。

Reference中引用的object叫做referent。

1 先看一个对象finalize的顺序问题。

                        //?有可能fail.??Assert.assertNull(Test.t);?

热点排行