简单理解 :强引用 软引用 弱引用 幻象引用的区别

1.强引用(StrongReference)
我们常见的普通对象的引用 例如Object object = new Object();
特点:只要强引用指向一个对象,就表明这个对象是”活的”,jvm宁可抛出OutOfMemoryError,也不会去回收这个对象。对于普通的对象,如果没有其他的引用关系,只要超过了引用的作用域或者显示的将引用赋值为null,就可以被垃圾收集。

2.软引用(SoftReference)
相对强引用弱化的一些引用。JVM内存不足时,会试图回收软引用指向的对象,jvm会确保在抛出OutOfMemoryError之前,清理软引用指向的对象。
比较适合:软引用通常用来实现内存敏感的缓存。如果还有空闲内存,就可以暂时保留缓存,当内存不足时清理掉,这样就保证了使用缓存的同时,不会耗尽内存。

3.弱引用(WeakReference)
弱引用一旦被垃圾回收器检测到,就会被回收。弱引用和引用队列联合使用,如果弱引用引用的对象被垃圾回收,java虚拟机就会把这个引用加入与之关联的引用队列中。

应用场景:用于内存敏感的缓存。

4.幻象引用(Phantom Reachable)
幻象引用仅仅是提供了一种确保对象被 finalize 以后,做某些事情的机制.
也有人利用幻象引用监控对象的创建和销毁
注意:所有引用类型,都是抽象类 java.lang.ref.Reference 的子类,它提供了 get() 方法,除幻象引用(get方法永远返回null),如果对象还没有被销毁,都可以通过 get 方法获取原有对象。这意味着,利用软引用和弱引用,我们可以将访问到的对象,重新指向强引用。

猜你喜欢

转载自blog.csdn.net/qdh186/article/details/80354801
今日推荐