WeakReference &&reference quene &&GC】的更多相关文章

在了解WeakReference之前,先给出一段简单的代码: public class WeakReferenceTest {public static void main(String[] args) throws Exception {Object o = new Object();// 默认的构造函数,会使用ReferenceQueue.NULL 作为queueWeakReference<Object> wr = new WeakReference<Object>(o);Sy…
public class WeakReference<T> extends Reference<T> { public WeakReference(T referent) { super(referent); } public WeakReference(T referent, ReferenceQueue<? super T> q) { super(referent, q); } } public abstract class Reference<T> {…
目录 引用计数法 计数器值的增减 new_obj()和update_ptr()函数 new_obj()生成对象 update_ptr()更新指针ptr,对计数器进行增减 优点 可即可回收垃圾 最大暂停时间短 没有沿着指针查找 缺点 计数器的增减处理频繁 计数器占用很多位 实现繁琐复杂 循环引用问题 延迟引用计数 什么是延迟引用计数 dec_ref_cnt()函数 new_obj()函数 scan_zct()函数 优缺点 Stricky引用计数法 什么是Stricky引用计数法 什么都不做 使用G…
目录 部分标记清除算法 前提 dec_ref_cnt()函数 new_obj()函数 scan_hatch_queue()函数 paint_gray()函数 scan_gray()函数 collect_white()函数 限定搜索对象 paint_gray()函数的要点 部分标记清除算法的局限性 部分标记清除算法 Partial Mark & Sweep,Rafael D.Lins,1992 之前我们说过,引用计数的循环引用问题.这个问题可以通过标记清除算法辅助解决.但是这种方法效率很低,标记清…
@(Java)[Reference] Java Reference 源码分析 Reference对象封装了其它对象的引用,可以和普通的对象一样操作,在一定的限制条件下,支持和垃圾收集器的交互.即可以使用Reference对象来引用其它对象,但是最后还是会被垃圾收集器回收.程序有时候也需要在对象回收后被通知,以告知对象的可达性发生变更.   Java提供了四种不同类型的引用,引用级别从高到低分别为FinalReference,SoftReference,WeakReference,PhantomR…
Java 中一共有 4 种类型的引用 : StrongReference. SoftReference. WeakReference 以及 PhantomReference (传说中的幽灵引用 呵呵),  这 4 种类型的引用与 GC 有着密切的关系,  让我们逐一来看它们的定义和使用场景 : 1. Strong Reference        StrongReference 是 Java 的默认引用实现,  它会尽可能长时间的存活于 JVM 内, 当没有任何对象指向它时 GC 执行后将会被回…
垃圾回收的基本思想就是判断一个对象是否可触及性,说白了就是判断一个对象是否可以访问,如果对象对引用了,说明对象正在被使用,如果发现对象没有被引用,说明对象已经不再使用了,不再使用的对象可以被回收,但是不一定立马被回收,取决于GC垃圾回收的算法. 判断对象的可触及性. 1.可以触及的:从根节点开始,可以到达这个对象,说明这个对象还在使用. 2.可复活的:对象的所有引用都被释放,但是对象可能在finalize()方法复活了. 3.不可触及的:对象的finalize()被调用,但是没有复活,那就彻底挂…
在阅读本文之前最好对 Reference 框架有一个整体的把握,可以参考我上一篇博客 Reference 框架概览 :本文主要讲了 Reference 的子类实现和应用(SoftReference,WeakReference,PhantomReference): Java 引用的强弱关系:StrongReference > SoftReference > WeakReference > PhantomReference 一.StrongReference 强引用:我们通常使用的引用,形如…
相关讲解,参考: Java Reference 源码分析 Java Reference详解 Reference: // 名称说明下:Reference指代引用对象本身,Referent指代被引用对象 /** * Reference的抽象基类,这个类中定义了所有引用对象的常用操作. * 由于引用对象是通过与垃圾回收器密切合作来实现的,因此,不要直接继承此基类; * * @since 1.2 */ public abstract class Reference<T> { /* * 一个Refere…
级别 什么时候被垃圾回收 用途 生存时间 强引用 从来不会 对象的一般状态 JVM停止运行时终止 软引用 在内存不足时 优化内存使用 内存不足时终止 弱引用 在垃圾回收时 对象缓存 gc运行后终止 虚引用   软引用.弱引用测试 /** * cd /Users/gl/IntelliJProjects/JBase/jdk/build/classes/main * java -Xms20M -Xmx20M -Xmn5M reference.TestReference */ public class…