強軟弱虛引用

四種引用的區別:

強引用:如果一個對象具有強引用,那垃圾回收器絕不會回收它。
軟引用:如果一個對象只具有軟引用,則內存空間足夠,垃圾回收器就不會回收它;如果內存空間不足了,就會回收這些對象的內存。軟應用常用來做內存敏感的緩存。
弱引用:一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。不過,由於垃圾回收器是一個優先級很低的線程,因此不一定會很快發現那些只具有弱引用的對象,所以弱引用仍然可以用來做緩存。
虛引用:如果一個對象僅持有虛引用,那麼它就和沒有任何引用一樣,在任何時候都可能被垃圾回收器回收。


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

    WeakReference<Object> 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","還在");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章