依赖关系

在这里插入图片描述

强引用

在这里插入图片描述
看案例
在这里插入图片描述
引用为空 强制回收 不起作用

软引用

在这里插入图片描述
在这里插入图片描述
没有回收 内存充足 我们只能强制gc 情理之中的事情

但如果内存不足呢?

虚拟机限定5m大小运行

 -Xms5m -Xmx5m -XX:+PrintGCDetails

2020版如果找不到的话
在这里插入图片描述
测试
在这里插入图片描述

完美 在内存不足时被回收了

弱引用

在这里插入图片描述
在这里插入图片描述

软弱引用的案例

在这里插入图片描述

WeakHashMap的使用

在这里插入图片描述
在这里插入图片描述
看jdk文档的说明
在这里插入图片描述当他的键不再被使用时 将会自动移除整个entry对象

说虚引用前要先说下引用队列 因为虚引用必须搭配引用队列

引用队列

在对象回收前先保存在引用队列中  说人话  一个存放对象的活人棺材

使用弱引用来举例
在这里插入图片描述
可以看到 第一次队列没有元素 但gc后队列有了一个引用对象

虚引用

与上面用法类似 只是做一个系统通知的作用
在这里插入图片描述

总结

再触发垃圾回收机制的前提下

强引用 死都不回收 oom异常 宇宙毁灭也不回收
软引用 有内存就留着 没内存就回收 -----我有钱就收留你 没钱就滚蛋
弱引用 不管如何都会被回收
虚引用 同上 但必须配合引用队列 只要起一个死亡前通知的作用
引用队列 活人棺材

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐