java对象的引用级别

Posted lihuamaoa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java对象的引用级别相关的知识,希望对你有一定的参考价值。

解释

在java中也有引用的概念,其实就可以认为是变量。标题中的引用级别是指变量与对象之前的引用级别。java中分为4种,按引用强弱关系排序分别是:强引用、软引用、弱引用、虚引用

强引用(Strong references)

特点:当JVM内存满了之后也不会断开引用关系,即使是发成OOM

我们平时使用new 创建的对象就属于强应用, 我们工作中产生的OOM有可能就是因为强引用引起的,所以要注意即使释放内存,切断与GC Roots的联系

软引用(Soft references)

特点:只有在JVM内存不足时才会被GC掉。是缓存实现的不二之选

创建方式:SoftReference.java

Guava 的 cache 实现的可选方案之一

弱引用(Weak references)

特点:系统每次GC都会把对象清除掉,不管JVM内存是否足够

创建方式:WeakReference.java

Guava 的 cache 实现的可选方案之一 , 与 软引用 都可实现。

虚引用(Phantom References)

特点:任何时候对象都可能被GC掉。事实上你在创建一个虚引用之后马上获取对象,这个对象都是空的

创建方式:PhantomReference.java

//todo 暂时不知道使用的场景是什么,之后补充

以上是关于java对象的引用级别的主要内容,如果未能解决你的问题,请参考以下文章

Java中对象的引用[关闭]

java中引用级别的理解及代码示例

java四种对象引用类型

探究Java中的引用

Java中的四种引用

Java:对象的强软弱和虚引用的区别