守望者watchmen 2014-08-14 10:27 采纳率: 0%
浏览 2115

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

我把以前写的关于弱引用实现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条回答 默认 最新

  • 曾经我是菜 2020-09-16 16:03
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件