• 技术文章 >java >java基础

    java中软引用是什么?怎么用?

    小妮浅浅小妮浅浅2021-02-03 18:40:08原创2569

    java.png

    本教程操作环境:windows7系统、java10版,DELL G3电脑

    1.概念

    软引用是用来描述一些还有用,但非必须的对象。只被软引用关联着的对象,在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行第二次回收,如果这次回收还没有足够的内存,才会抛出内存溢出异常

    2.应用场景

    软引用通常用来实现内存敏感的缓存。如果还有空闲内存,就可以暂时保留缓存,当内存不足时清理掉,这样就保证了使用缓存的同时,不会耗尽内存。

    3.实例

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    byte[] data = new byte[1*1024*1024];

    ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>();

    SoftReference<byte[]> softReference = new SoftReference<>(data,referenceQueue);

    data = null;

    System.out.println("before:"+softReference.get());

      

    try {

        for (int i = 0; i < 10; i++) {

            byte[] temp = new byte[3*1024*1024];

            System.out.println("processing:"+softReference.get());

        }

    } catch (Throwable t) {

        System.out.println("after:"+softReference.get());

        t.printStackTrace();

    }

    while(referenceQueue.poll()!=null){

        System.out.println("self:"+softReference);

        softReference.clear();

        softReference = null;

        System.out.println("last:"+softReference);

    }

    VM options:-Xms5m -Xmx5m -XX:+PrintGC

    以上就是java中软引用的使用方法,相信很多小伙伴都急着需要释放内存的方法,能够在内存将满时自动去掉不必要的数据。

    专题推荐:java软引用
    上一篇:java继承如何访问变量? 下一篇:弱引用怎样在java中回收?

    相关文章推荐

    • java中char是什么?如何使用?• boolean怎样java中实现取值?• java基础:基本类型如何转换?• java中的强引用如何理解?• java继承如何访问变量?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网