强软弱虚引用

四种引用的区别:

强引用:如果一个对象具有强引用,那垃圾回收器绝不会回收它。
软引用:如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。软应用常用来做内存敏感的缓存。
弱引用:一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象,所以弱引用仍然可以用来做缓存。
虚引用:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。


软引用使用例子:
private void useSoftReference(){
    Object object = new Object();

    WeakReference softReference = new WeakReference(object);

    isNull(softReference.get());


    object = null;
    System.gc();

    try {
        Thread.sleep(3000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

    isNull(softReference.get());
}

private void isNull(Object object){
    if(object == null){
        Log.i("minfo","消失了");
    }else{
        Log.i("minfo","还在");
    }
}
 
 

你可能感兴趣的:(强软弱虚引用)