JVM中的对象生命周期详解 - 编程入门网
算法检查是否回收Soft引用对象,而对于Weak引用对象, GC总是进行回收。因此Weak引用对象会更容易、更快被GC回收。虽然,GC在运行 时一定回收Weak引用对象,但是复杂关系的Weak对象群常常需要好几次GC的运行 才能完成。Weak引用对象常常用于Map数据结构中,引用占用内存空间较大的对 象,一旦该对象的强引用为null时,对这个对象引用就不存在了,GC能够快速地 回收该对象空间。与软引用类似我们也可以给出相应的应用代码:
弱引用技术主要适用于实现无法防止其键(或值)被回收的规范化映射。另 外,弱引用分为“短弱引用(Short Week Reference)”和“长弱引用(Long Week Reference)”,其区别是长弱引用在对象的Finalize方法被GC调用后依然 追踪对象。基于安全考虑,不推荐使用长弱引用。因此建议使用下面的方式创建 对象的弱引用。
JVM中的对象生命周期详解(4)时间:2011-06-19 iteye 小丑鱼4.虚引用 虚引用(Phantom Reference)的用途较少,主要用于辅助finalize函数的使 用。Phantom对象指一些执行完了finalize函数,并且为不可达对象,但是还没 有被GC回收的对象。这种对象可以辅助finalize进行一些后期的回收工作,我们 通过覆盖Reference的clear()方法,增强资源回收机制的灵活性。虚引用主要适 用于以某种比 java 终结机制更灵活的方式调度 pre-mortem 清除操作。 &注意 在实际程序设计中一般很少使用弱引用与虚引用,使用软引用 的情况较多,这是因为软引用可以加速JVM对垃圾内存的回收速度,可以维护系 统的运行安全,防止内存溢出(OutOfMemory)等问题的产生。 不可视阶段 在一个对象经历了应用阶段之后,那么该对象便处于不可视阶段,说明我们 在其他区域的代码中已经不可以再引用它,其强引用已经消失,例如,本地变量 超出了其可视范围,如下所示。
如果一个对象已使用完,而且在其可视区域不再使用,此时应该主动将其设 置为空(null)。可以在上面的代码行obj.doSomething();下添加代码行obj = null;,这样一行代码强制将obj对象置为空值。这样做的意义是,可以帮助JVM 及时地发现这个垃圾对象,并且可以及时地回收该对象所占用的系统资源。 不可到达阶段 处于不可到达阶段的对象,在虚拟机所管理的对象引用根集合中再也找不到 直接或间接的强引用,这些对象通常是指所有线程栈中的临时变量,所有已装载 的类的静态变量或者对本地代码接口(JNI)的引用。这些对象都是要被垃圾回 收器回收的预备对象,但此时该对象并不能被垃圾回收器直接回收。其 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |