依赖关系
强引用
看案例
引用为空 强制回收 不起作用
软引用
没有回收 内存充足 我们只能强制gc 情理之中的事情
但如果内存不足呢?
虚拟机限定5m大小运行
-Xms5m -Xmx5m -XX:+PrintGCDetails
2020版如果找不到的话
测试
完美 在内存不足时被回收了
弱引用
软弱引用的案例
WeakHashMap的使用
看jdk文档的说明
当他的键不再被使用时 将会自动移除整个entry对象
说虚引用前要先说下引用队列 因为虚引用必须搭配引用队列
引用队列
在对象回收前先保存在引用队列中 说人话 一个存放对象的活人棺材
使用弱引用来举例
可以看到 第一次队列没有元素 但gc后队列有了一个引用对象
虚引用
与上面用法类似 只是做一个系统通知的作用
总结
再触发垃圾回收机制的前提下
强引用 死都不回收 oom异常 宇宙毁灭也不回收
软引用 有内存就留着 没内存就回收 -----我有钱就收留你 没钱就滚蛋
弱引用 不管如何都会被回收
虚引用 同上 但必须配合引用队列 只要起一个死亡前通知的作用
引用队列 活人棺材