定义 软引用(Soft Reference)是 Java 中引用类型的一种。它是一种相对较弱的引用,在 Java 的垃圾回收机制(Garbage Collection,GC)中具有特殊的处理方式。 用途 软引用主要用于缓存场景,当内存空间足够时,垃圾回收器不会回收软引用所指向的对象;只有当内存不足时,才会回收这些对象,以释放内存空间。这使得它非常适合用来缓存那些在内存紧张时可以被牺牲掉的数据。
/** * 当你的老板抠抠搜搜,不肯加机器还要提升优化效率时可以试用【一般不用,第三方缓存工具,redis,mongo,eachher不多的是选择吗】 */ 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); } } }
标签:get,softReference,cache,回收,引用,key From: https://www.cnblogs.com/wangbiaohistory/p/18631054