1. 程式人生 > 其它 >引用的四種類型_軟引用

引用的四種類型_軟引用

技術標籤:JVM

												引用的四種類型_軟引用
package src.main.java.com.qqjx.thread;


/**
 * 軟引用
 * 軟引用是用來描述一些還有用但並非必須的物件。
 * 對於軟引用關聯著的物件,在系統將要發生記憶體溢位異常之前,將會把這些物件列進回收範圍進行第二次回收。
 * 如果這次回收還沒有足夠的記憶體,才會丟擲記憶體溢位異常。
 * -Xmx20M
 */

import java.lang.ref.SoftReference;

public class T02_SoftReference {
    public static
void main(String[] args) { //idea 配置最大最小堆大小為20MB SoftReference<byte[]> m = new SoftReference<>(new byte[1024*1024*10]); //m = null; //第一次能正常 獲取 System.out.println(m.get()); //第一次不能正常回收 System.gc(); try { Thread.sleep(500);
} catch (InterruptedException e) { e.printStackTrace(); } // 第二次能正常獲取 System.out.println(m.get()); //再分配一個數組,heap將裝不下,這時候系統會垃圾回收,先回收一次,如果不夠,會把軟引用幹掉 byte[] b = new byte[1024*1024*15]; System.out.println(m.get()); } } //軟引用非常適合快取使用
[
B@1b6d3586 [B@1b6d3586 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at src.main.java.com.qqjx.thread.T02_SoftReference.main(T02_SoftReference.java:36)