二、软引用(SoftReference)与弱引用(WeakReference)
软引用:如果一个对象只具有软引用,而当前虚拟机堆内存空间足够,那么垃圾回收器就不会回收它,反之就会回收这些软引用指向的对象。
弱引用:垃圾回收器一旦发现某块内存上只有弱引用(一定请注意只有弱引用,没强引用),不管当前内存空间是否足够,那么都会回收这块内存。
三、代码实例(强引用VS软引用)
现在的管理系统里,为了提升性能,往往会加入缓存,将部分常用的数据缓存到内存中,这样用于在访问时,会直接从内存中取出,降低数据库的访问量,加快用户获取数据的速度。将数据加入到hashmap中,如果内存空间足够,那么我们可以通过缓存来提升性能,但万一内存空间不够,我们可以依次释放一些内存,释放后不会影响业务流程,最多就是降低些性能。
对比一下,如果我们这里不用软应用,而是用强引用来缓存,由于不知道用户何时点击,我们还无法得知什么时候可以撤销这些对象上的强引用,或者即使我们引入了一套缓存淘汰流程,但这就是额外的工作了,这就没刚才使用“软引用“那样方便了。
1、软引用hashmap工具类
public class SoftHashMap<K, V> extends HashMap<K, V> {
/**
-
queue,软引用标记队列
-
-
★★★★★★★ 解释