java中的引用
引用分类
-
强引用
- 强引用是我们常见的普通对象引用,只有还有强引用指向一个对象,就表明这个对象还“存活”,垃圾收集器不会碰这个对象
- 当一个对象被强引用对象引用时,它就处于 可达状态,它是不能被垃圾回收的,即使出现了OOM也不会对该对象回收
-
软引用
- 软引用是相对于强引用弱化了一些的引用
- 当系统内存充足时, 它不会被回收
- 当系统内存不足时, 会被回收
- 借助java.lang.ref.SoftReference类来实现
SoftReference<MyObject> softReference = new SoftReference<>(new MyObject());
- 软引用是相对于强引用弱化了一些的引用
-
弱引用
- 只要gc了,无论内存是否充足,都会被回收
- 借助java.lang.ref.WeakReference类来实现
WeakReference<MyObject> weakReference = new WeakReference<>(new MyObject());
-
虚引用
- 虚引用不会决定对象的生命周期, 如果一个对象仅仅持有虚引用,那么它和没有任何引用一样,在任何时候都可能被回收,他不能单独使用,虚引用必须搭配 引用队列—ReferenceQueue 联合使用
- 主要作用是跟踪对象被垃圾回收的状态, 仅仅是提供了一种确保对象被finalize以后,做某些事情的通知机制
- 借助java.lang.ref.PhantomReference类来实现
关于http协议