四种引用类型
强引用
常见的new,不会被回收
Integer a = new Integer(1);
软引用
内存不够就回收了,
SoftReference<Integer> b = new SoftReference<Integer>(1);
弱引用
不够内存够不够,都会回收
WeakReference<Integer> c = new WeakReference<Integer>(1);
虚引用
- 当引用被回收时,如果发现存在虚引用,加把这个加到队列里面,通过队列的变化知晓回收时间然后做相应处理。
- 堆外内存释放
ReferenceQueue q = new ReferenceQueue<Integer>();
PhantomReference<Integer> d = new PhantomReference<Integer>(1, q);
//当q的size变了,需要处理这个引用