四大引用的灵活应用可以开发出更高性能的Java程序,在Android开发中应用广泛。
定义:
强引用:通常定义的对象都是强引用,即是OOM,垃圾回收机制也不会回收。定义方式:直接定义;
软引用:发生内存不足时,为了避免OOM,垃圾回收机制就会回收。定义方式:SoftReference;
弱引用:在进行垃圾回收时,只要所引用的对象为null,则直接回收。定义方式:WeakReference;
虚引用:也叫幽灵引用,在进行垃圾回收时,无论是否为null,都要被回收,主要用来跟踪垃圾回收过程。定义方式:PhantonReference;
使用场景:
这里我们主要讲软引用和和弱小的使用场景。
软应用:对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。因此,这一点可以很好地用来解决OOM的问题,并且这个特性很适合用来实现缓存:比如网页缓存、图片缓存等。?
class="java" name="code">import java.lang.ref.SoftReference; public class Main { public static void main(String[] args) { SoftReference<String> sr = new SoftReference<String>(new String("hello")); System.out.println(sr.get()); } }
?弱引用:
?如果一个对象只具有弱引用,他的生命周期更加短暂,那么当垃圾回收器线程在扫描他所管理的内存区域时,不管内存空间是否足够,都会将这个对象回收。不过垃圾回收器线程优先级比较低,因此只有弱引用的对象不一定会很快的被回收。
WeakReference<String> wr = new WeakReference<String>(str, rq);
?
?