守望者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 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值