JAVA 引用类型
众所周知,JAVA中存在八大基本数据类型以及引用类型,其中引用类型其实就是基本类型的封装和类实例化生成的对象,统称为引用类型。
而引用类型会因GC回收机制,被细分为四种类型。
强引用
顾名思义,GC回收机制面对强引用类型时,即使报错也不会对强引用类型进行回收。
软引用
在内存充足时GC回收机制不会回收软引用;
当内存紧张时,GC回收机制优先回收老年区的软引用,尽可能保留新生区的软引用。
// 强引用 String strongReference = new String("abc"); // 软引用 String str = new String("abc"); SoftReference<String> softReference = new SoftReference<String>(str);
弱引用
只能生存到下一次GC回收之前。
Object obj = new Object(); WeakReference<Object> weakReference = new WeakReference<Object>(obj);//弱引用
虚引用
顾名思义,等同于非引用类型,随时可能会被回收。
Object obj = new Object(); ReferenceQueue refQueue = new ReferenceQueue(); PhantomReference<Object> phantomReference = new PhantomReference<Object>(obj, refQueue); System.out.println(phantomReference.get()); // 永远返回Null System.out.println(phantomReference.isEnqueued()); //返回时否从队列中删除