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()); //返回时否从队列中删除

 

posted @ 2022-02-24 19:21  Kisen  阅读(71)  评论(0)    收藏  举报