发布网友 发布时间:2022-04-24 07:47
共1个回答
热心网友 时间:2022-06-17 18:19
强引用,任何时候都不会被;垃圾回收器回收,如果内存不足,宁愿抛出OutOfMemoryError
软引用,只有在内存将满的时候才会被垃圾回收器回收,如果还有可用内存,垃圾回收器不会回收
弱引用,只要垃圾回收器运行,就肯定会被回收,不管还有没有可用内存。
虚引用,虚引用等于没有引用,任何时候都有可能被垃圾回收。
----------------
下面谈谈我的理解:
软引用非常适合用来实现高速缓存。
高速缓存的特点,如果命中则能加快响应,如果未命中还能去重新获取原始数据。
如对某更新频率低,但查询很慢的数据库。SQL查询高速缓存是个不错的注意。
import java.lang.ref.SoftReference;
---------------
为什么不直接使用Map<String, Object>,因为这样的话就会是强引用,随着缓存的越来越多,内存会耗尽,而垃圾回收不会回收,因为数据还被强引用引用。
而是用软引用,会在内存将耗尽的情况下,将其进行垃圾回收(会优先回收最近不被使用的软引用对象)