四种引用的区别:
强引用:如果一个对象具有强引用,那垃圾回收器绝不会回收它。
软引用:如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。软应用常用来做内存敏感的缓存。
弱引用:一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象,所以弱引用仍然可以用来做缓存。
虚引用:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
软引用使用例子:
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","还在");
}
}
网友评论