- 强引用(StrongReference) 一般的赋值就是建立强引用,只要有强引用就不会被回收。
- 软引用(Soft Reference) 在系统将要发生内存溢出时进行回收,如果回收后还是不够内存才跑出内存溢出异常。内存足够则不会回收。
- 弱引用(Weak Reference) 只能存活到下一次GC时,不管内存是否足够。
- 虚引用(Phantom Reference) 对对象的生存时间没影响,目的是为了在对象被回收时得到系统通知。
对于软引用、弱引用、虚引用 可以创建一个referenceQueue来跟踪对象是否被回收。
级别 | 回收时间 | 用途 | 生存时间 |
---|---|---|---|
强引用 | 从来不会 | 对象的一般状态 | JVM停止运行时终止 |
软引用 | 在内存不足时(fullgc) | 缓存 | 内存不足时终止 |
弱引用 | 在垃圾回收时 | 缓存 | gc运行后终止 |
虚引用 | Unknown | Unknown | Unknown |