JVM 基本知识点
JVM 基本知识点
Java 中的四种引用
- strong reference (强引用):,就是直接 new 一个对象然后用
=
进行赋值 - soft reference(软引用)∶会在堆内存不足而 gc 的时候回收的时候,通常用来做缓存,因为会在堆内存不足的时候自动释放空间。
- weak reference(弱引用)∶如果本次 gc 扫描堆内存,没有强引用指向这个引用对象,那么这个对象会在下一次 gc 的时候回收 (相当于这次做个标记,下一次直接清除) 。我们在 java.util.WeakHashMap 中遇见过很多次。
- 有人会说这个不就跟 soft reference 一样了吗? 不是的,gc 并不是只有在堆内存不足的时候才触发的。比如堆内存用到了一定的比例,或者垃圾回收器自己的一些主动的堆碎片内存的优化都会触发 gc。
- phantom reference(虚引用): 虚引用是一个非常强大的工具,可以帮助开发者精确管理资源,尤其是在需要跟踪对象的回收时间并执行额外操作的场景中使用。
jvm 堆内存不足,可能是堆内存真的没有剩余空间了,也有可能是没有连续的大于申请值的空间。