强引用
只要强引用指向一个对象,那么就表示这个对象“活着”,垃圾回收器就不会回收这个对象。像这样都叫强引用
Object object=new Object();
软引用
就是被SoftReference类实现的引用,主要特征就是当内存充足的时候不会被释放能够存活,内存不足的时候,在垃圾回收动作来临的时候,会被回收释放内存。
SoftReference soft=new SoftReference(new String("aaa"));
soft.get();
弱引用
是指被WeakReference类实现的引用,只能存活在下一次垃圾回收发生之前,如果进行垃圾回收,那么就一定会被回收。
WeakReference weak=new WeakReference(new String("aaa"));
weak.get();
虚引用
指被PhantomReference类实现的引用,但是无法通过虚引用来获取一个对象的实例,他是跟踪对象引用被加入队列的时刻,所以必须要配合队列的使用。gc之后才能从队列中找到
虚引用引用的对象在被垃圾回收时,虚引用对象自己就会放入引用队列,间接由一个线程调用虚引用的一个方法,释放那块直接内存。
ReferenceQueue referenceQueue = new ReferenceQueue();
PhantomReference phantomReference = new PhantomReference(new String("aaa"),referenceQueue);