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