软引用

定义
软引用(Soft Reference)是 Java 中引用类型的一种。它是一种相对较弱的引用,在 Java 的垃圾回收机制(Garbage Collection,GC)中具有特殊的处理方式。
用途
软引用主要用于缓存场景,当内存空间足够时,垃圾回收器不会回收软引用所指向的对象;只有当内存不足时,才会回收这些对象,以释放内存空间。这使得它非常适合用来缓存那些在内存紧张时可以被牺牲掉的数据。

  

/**
 * 当你的老板抠抠搜搜,不肯加机器还要提升优化效率时可以试用【一般不用,第三方缓存工具,redis,mongo,eacher不多的是选择吗】
 */
public class T {
    private Map<String, SoftReference<Object>> cache = new HashMap<>();
    private ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>();
    
    public void put(String key, Object value) {
        // 清理已经被回收的软引用
        cleanUp();
        SoftReference<Object> softReference = new SoftReference<>(value, referenceQueue);
        cache.put(key, softReference);
    }
    
    public Object get(String key) {
        SoftReference<Object> softReference = cache.get(key);
        if (softReference!= null) {
            return softReference.get();
        }
        return null;
    }
    
    private void cleanUp() {
        Reference<? extends Object> reference;
        while ((reference = referenceQueue.poll())!= null) {
            cache.values().remove(reference);
        }
    }
  
}

  

posted @ 2024-12-25 17:33  余生请多指教ANT  阅读(43)  评论(0)    收藏  举报