美文网首页
java中的引用

java中的引用

作者: 持续在更新 | 来源:发表于2018-05-25 22:21 被阅读0次

Java 中除了强引用之外,还提供了其它低级别的引用

对象可达状态:

在强引用之外,弱引用可以泛化成多种不同强度的弱指针。     

以引用强度为顺序的回收可以为每种强度级别关联一个正整数。对于给定的整数 a>0,

如果从根出发存在一条指针链可以到达某一对象,且该指针链重点的所有指针强度均不小于a,则称该对象为a可达

强可达:必然有一条是强引用

软可达:通过软引用实现,不保证gc回收时置空,jvm保证 OutOfMemery之前回收

弱可达:通过弱引用实现,gc下次时置空弱引用,回收

虚可达:无法通过get()方法获取到引用的对象,gc不负责引用置空,需手动实现

          特殊:如果对象中实现了finalize()方法,jvm会为该对象创建FinalReference引用,一般用于保底操作(回收资源等),建议手动提前回收资源。

 当gc扫描时,发现相应的引用时,把引用放入链表中

jvm把引用放到discovered或者pending

判断对象无强引用时,如果判断该对象需要回收,把相应引用置空,对象成不可达状态,

把discoved中引用放入pending链表中

③ Reference中线程Reference Handler处理pending链表,

  3.1 如果是Cleaner(PhantomReference子类),直接调用clean()方法

  3.2 把引用放入到自己的ReferenceQueue中。

4  不同级别的引用对自己的队列做不同处理

   4.1  Finalizer(FinalReference) 调用Finalizer()方法,并且调用super.clear()置空引用

4.2 SoftReference 手动实现置空

4.3 weakReference 手动实现置空

相关文章

  • Weak Reference Soft Reference Ph

    JAVA 中的引用 JAVA 中存在4种引用,由强到弱依次是强引用、软引用、弱引用、虚引用。 强引用(Strong...

  • 面试题笔记

    Java中引用类型的区别,具体的使用场景 Java中引用类型分为四类:强引用、软引用、弱引用、虚引用。 强引用:强...

  • Java四种引用方式

    Java引用方式包括: 强引用、软引用、虚引用、弱引用 java的对象位于heap中,heap中的对象有强可及对象...

  • Java的引用

    参考链接: Java到底是值传递还是引用传递 Java的四种引用方式 Java中的强引用、软引用、弱引用和虚引用 ...

  • 基于堆栈内存详析 Java函数形参是传值还是引用? | C++指

    Java的引用 及 Java函数形参是传值还是引用 Java中没有指针的说法,Java中的引用就类似于C++的指针...

  • Java基础:Java的四种引用

    在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用。包括:强引用,软引用,弱引用,虚引用。这...

  • 深入理解Java弱引用

    Java中的引用类型 Java中存在四种引用,它们由强到弱依次是:强引用、软引用、弱引用、虚引用。下面我们简单介绍...

  • Java中弱引用、软引用、虚引用及强引用的区别

    相关参考文献如下: Java中弱引用、软引用、虚引用及强引用的区别 ReferenceQueue的使用 Java ...

  • Java引用及其应用

    Java 引用分类 Java 中的引用分为四种,具体如下 强引用(StrongReference)强引用是使用最普...

  • Java引用详解

    1 Java中的四种引用 在Java中提供了四个级别的引用:强引用,软引用,弱引用和虚引用。在这四个引用类型中,只...

网友评论

      本文标题:java中的引用

      本文链接:https://www.haomeiwen.com/subject/sbqpjftx.html