Java 中强引用, 软引用SoftReference,弱引用WeakReference,虚引用
Java当中的引用有四种:
1.强引用
平常我们用的最多的引用。
只有当分配的内存对象不再有任何引用时,GC才可能开始回收其内存。
1 A obj = new A();
2 .....
3 obj =null;
2 .....
3 obj =null;
此时obj 可以被回收。
2.软引用SoftReference:
SoftReference常常被用于高速缓存cache,它的特点是,并不是你把它设成了null(对象不可达),GC就会回收它,而是只有当内存不足时,才去回收它!
3.弱引用WeakReference
实际上是一种“间接”引用,
当我们希望能随时取得某对象的信息,但又不想影响此对象的垃圾收集,那么你应该用 Weak Reference来记住此对象。
1 A obj = new A();
2 WeakReference wr = new WeakReference(obj);
3 obj = null;
4
5 //等待一段时间,obj对象就会被垃圾回收
6 ...
7
8 if (wr.get()==null) {
9 System.out.println("obj 已经被清除了 ");
10 } else {
11 System.out.println("obj 尚未被清除,其信息是 " obj.toString());
12 }
2 WeakReference wr = new WeakReference(obj);
3 obj = null;
4
5 //等待一段时间,obj对象就会被垃圾回收
6 ...
7
8 if (wr.get()==null) {
9 System.out.println("obj 已经被清除了 ");
10 } else {
11 System.out.println("obj 尚未被清除,其信息是 " obj.toString());
12 }
虚引用

浙公网安备 33010602011771号