软引用实现缓存在实际项目中的用处大不大?

我把以前写的关于弱引用实现java缓存的实例分享给大家,虽然简单但是能说明软引用实现缓存的原理,有助于学习软引用集合等.对于弱引用,软引用,虚引用的概念相信大家已经熟悉了,我们这里就不讲解了,直接上例子.

import java.lang.ref.SoftReference;

/**

  • 软引用测试
    */
    public class SoftReferenceDemo {

    public static void main(String[] args) {

    A a = new A();
    //使用a
    a.test();
    //使用完了a,将它设置为soft引用类型,并且释放强引用
    SoftReference sr = new SoftReference(a);
    a = null;
    
    //下次使用
    if (sr != null) {
        a = (A)sr.get();
        a.test();
    } else {
        //GC由于低内存,已释放a,因此需要重新装载
        a = new A();
        a.test();
        a = null;
        sr = new SoftReference(a);
    }
    

    }
    }
    class A {
    public void test() {
    System.out.println("Soft Reference test");
    }

}

小结:对于在内存中不经常使用,也就是偶尔调用一次的应用可以考虑使用软或则弱引用,以提高垃圾回收效率.

更多的技术帖子来自www.watchmen.cn

弱引用不适合作为缓存,一般窗体程序或者内部有一个按时循环的线程的程序中,弱引用通常会在很短的时间内被释放,一般保存时间在1秒以内。通常长时间保存弱引用的主要是单线程控制台程序。
实际上只有软引用可以作为缓存。