快速业务通道

JVM中的对象生命周期详解 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
算法检查是否回收Soft引用对象,而对于Weak引用对象, GC总是进行回收。因此Weak引用对象会更容易、更快被GC回收。虽然,GC在运行 时一定回收Weak引用对象,但是复杂关系的Weak对象群常常需要好几次GC的运行 才能完成。Weak引用对象常常用于Map数据结构中,引用占用内存空间较大的对 象,一旦该对象的强引用为null时,对这个对象引用就不存在了,GC能够快速地 回收该对象空间。与软引用类似我们也可以给出相应的应用代码:

… … import java.lang.ref.WeakReference; … A a = new A(); … // 使用 a … // 使用完了a,将它设置为weak 引用类型,并且释放强引用; WeakReference wr = new WeakReference (a); a = null; … // 下次使用时  if (wr!=null) {    a = wr.get(); } else{    a = new A();    wr = new WeakReference (a); } … …

弱引用技术主要适用于实现无法防止其键(或值)被回收的规范化映射。另 外,弱引用分为“短弱引用(Short Week Reference)”和“长弱引用(Long Week Reference)”,其区别是长弱引用在对象的Finalize方法被GC调用后依然 追踪对象。基于安全考虑,不推荐使用长弱引用。因此建议使用下面的方式创建 对象的弱引用。

… … WeakReference wr = new WeakReference(obj); 或  WeakReference wr = new WeakReference(obj, false); … …

JVM中的对象生命周期详解(4)

时间:2011-06-19 iteye 小丑鱼

4.虚引用

虚引用(Phantom Reference)的用途较少,主要用于辅助finalize函数的使 用。Phantom对象指一些执行完了finalize函数,并且为不可达对象,但是还没 有被GC回收的对象。这种对象可以辅助finalize进行一些后期的回收工作,我们 通过覆盖Reference的clear()方法,增强资源回收机制的灵活性。虚引用主要适 用于以某种比 java 终结机制更灵活的方式调度 pre-mortem 清除操作。

&注意  在实际程序设计中一般很少使用弱引用与虚引用,使用软引用 的情况较多,这是因为软引用可以加速JVM对垃圾内存的回收速度,可以维护系 统的运行安全,防止内存溢出(OutOfMemory)等问题的产生。

不可视阶段

在一个对象经历了应用阶段之后,那么该对象便处于不可视阶段,说明我们 在其他区域的代码中已经不可以再引用它,其强引用已经消失,例如,本地变量 超出了其可视范围,如下所示。

… … public void process () {    try {       Object obj = new Object();       obj.doSomething();     } catch (Exception e) {     e.printStackTrace();     }     while (isLoop) { // ... loops forever     // 这个区域对于obj对象来说已经是不可视的了       // 因此下面的代码在编译时会引发错误       obj.doSomething();     } } … …

如果一个对象已使用完,而且在其可视区域不再使用,此时应该主动将其设 置为空(null)。可以在上面的代码行obj.doSomething();下添加代码行obj = null;,这样一行代码强制将obj对象置为空值。这样做的意义是,可以帮助JVM 及时地发现这个垃圾对象,并且可以及时地回收该对象所占用的系统资源。

不可到达阶段

处于不可到达阶段的对象,在虚拟机所管理的对象引用根集合中再也找不到 直接或间接的强引用,这些对象通常是指所有线程栈中的临时变量,所有已装载 的类的静态变量或者对本地代码接口(JNI)的引用。这些对象都是要被垃圾回 收器回收的预备对象,但此时该对象并不能被垃圾回收器直接回收。其

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号