java强引证、 SoftReference 、 WeakReference 和 PhantomReference的差异ITeye - AG环亚娱乐

java强引证、 SoftReference 、 WeakReference 和 PhantomReference的差异ITeye

2019-01-13 05:48:21 | 作者: 吉星 | 标签: 引证,收回,废物 | 浏览: 1176

强引证,任何时分都不会被;废物收回器收回,假如内存缺乏,甘愿抛出OutOfMemoryError

软引证,只需在内存将满的时分才会被废物收回器收回,假如还有可用内存,废物收回器不会收回

弱引证,只需废物收回器运转,就必定会被收回,不论还有没有可用内存。

 

虚引证,虚引证等于没有引证,任何时分都有或许被废物收回。

 

咱们知道java言语供给了4种引证类型:强引证、软引证(SoftReference)、弱引证(WeakReference)和鬼魂引证(PhantomReference),与引证密切相关的,还有一个引证行列ReferenceQueue。引证和引证行列的联系,关于废物收回来说非常重要,学习废物收回机制,必需要先了解引证和引证行列的运用方法。本文首要参阅网上的一些理论,一起合作自己的一些测验代码,更好的了解这些概念。这篇博客也处理了 System.gc()和-XX:+DisableExplicitGC发动参数,以及DirectByteBuffer的内存开释  中留传的鬼魂引证的问题。

 

1、强引证

     强引证不会被GC收回,并且在java.lang.ref里也没有实践的对应类型,平常作业触摸的最多的就是强引证。
Object obj = new Object();这儿的obj引证就是一个强引证。假如一个目标具有强引证,那就类似于必不可少的生活用品,废物收回器绝不会收回它。当内存空 间缺乏,Java虚拟机甘愿抛出OutOfMemoryError过错,使程序反常停止,也不会靠随意收回具有强引证的目标来处理内存缺乏问题。

 

2、软引证

假如一个目标只具有软引证,那就类似于可有可物的生活用品。假如内存空间满足,废物收回器就不会收回它,假如内存空间缺乏了,就会收回这些目标的内存。只 要废物收回器没有收回它,该目标就能够被程序运用。软引证可用来完成内存灵敏的高速缓存。 软引证能够和一个引证行列(ReferenceQueue)联合运用,假如软引证所引证的目标被废物收回,Java虚拟机就会把这个软引证加入到与之相关的引证行列中。

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章