不同类型的参考文献主要反映在不同对象的状态和垃圾收集的影响中。
01.强烈的引用
这是我们创建的普通对象。
02.软引用
软引用(),当内存不足时,它将被回收
例如:
回收后,它将在这里打印而不是
03.弱参考
弱报价(),当垃圾回收通过垃圾回收时,无论记忆脚如何,它都会被垃圾回收。
例如:
回收后,它将被打印而不是
04。
两个 - to -use(),这也随时被回收,但其作用更像是标记。当对象被回收时,它不会做到,但是应注意,只有在称为一个值时才能获得。
建立对象协会的唯一目的是在收集器回收此对象时接收系统通知。 <<深入理解Java虚拟机>>
这里cither http://www.javashuo.com/article/p- zyvdcbhl-html示例:
因此,经过简短的介绍,在上述4个引用之后,让我们看一下其可访问性?
如图所示:
通过初始代码示例和上图(两个 - 路箭头),我们还可以发现可以转换软引用和弱参考和强引用(可以获得原始对象),这意味着:
对于软引用和弱参考,垃圾收集器可能存在第二个确认问题,以确保弱参考状态的对象尚未更改为强参考。
在中间,您还可以通过指定参数来打印引用的相关信息:
-xx:+printgcdetails -xx:+printgctimestamps -xx:+printreferencegc
使用收集的垃圾回收日志(PDF PDF中的示例):
0.403:[GC(分配失败)0.871:[Softreference,0 Refs,0.0000393 secs] 0.871:[FeeBreference,8 Refs,0.0000138 secs] 0.871:[FinalReference,4 Ref,4 ref,0.0000094 sec]]
用户= 1.17 sys = 0.03,真实= 0.47秒]
记录这一点?(哈哈不知道什么时候使用?)
通过基础API获得强有力的参考?
嘿,终于提到了这一点,正如一开始?4ye在考虑撰写本文之前,在源代码中也看到了这一点。
那么这到底是什么?
可以指定存储对象的参考级别
默认情况下是软吸引的水平
例如,Springboot自动装配原则中提到的主角:
源代码如下:
在自动配置过程中也有注释扫描
在长期的文章中,请您快速使用这些池技术!异步任务线程池出现在一篇文章中:
源代码如下:(您可以看到这是一个弱参考级别)
作者:4岁酱