java四大引用

  1. 软引用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    package nowcoder;

    import java.lang.ref.SoftReference;

    public class Test {
    private static class Bigger{
    public int[] values;
    public String name;
    public Bigger(String name){
    this.name=name;
    values=new int[1024];
    }
    }
    public static void main(String[] args) {
    int count =1000000;
    SoftReference[] values=new SoftReference[count];
    for(int i=0;i<count;i++){
    values[i]=new SoftReference<Bigger>(new Bigger("bigger-"+i));
    }
    for(int i=0;i<10;i++){
    System.out.println(((Bigger)(values[i].get())).name);
    }
    }
    }

    输出如下:

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

Donate comment here