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

美女程序员鼓励师

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

1.概念

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

2.应用场景

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

3.实例

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中软引用是什么?怎么用? 的全部内容, 来源链接: utcz.com/z/542037.html

回到顶部