龙空技术网

Java 中都有哪些引用类型?搞几年了也没关注过

码农院子 370

前言:

如今大家对“java的引用类型有哪些”大约比较关怀,我们都需要了解一些“java的引用类型有哪些”的相关知识。那么小编也在网络上搜集了一些有关“java的引用类型有哪些””的相关知识,希望大家能喜欢,看官们一起来了解一下吧!

Java 中有四种引用类型,分别是强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。下面我将对每种引用类型进行详细的举例说明。

1、强引用(Strong Reference)

强引用是 Java 中最常见的引用类型,也是默认的引用类型。如果一个对象具有强引用,那么垃圾回收器就不会回收这个对象。当内存空间不足时,JVM 会抛出 OutOfMemoryError 异常。

代码示例:

Copy CodeObject obj = new Object(); // 强引用

2、软引用(Soft Reference)

软引用指向的对象只有在内存不足时才会被回收,通常用于实现缓存。当内存空间不足时,JVM 会回收软引用指向的对象,但在回收之前会尽可能地保证这些对象能够被访问,以便程序能够将其移除缓存。

代码示例:

Copy CodeObject obj = new Object();SoftReference<Object> softRef = new SoftReference<>(obj); // 软引用

3、弱引用(Weak Reference)

弱引用指向的对象只有在下一次 GC 时才会被回收。当弱引用指向的对象被回收时,JVM 会自动将该引用设置为 null。弱引用通常用于实现一些功能,例如对象注册表,这些对象只有在存在强引用时才能被访问。

代码示例:

Copy CodeObject obj = new Object();WeakReference<Object> weakRef = new WeakReference<>(obj); // 弱引用

4、虚引用(Phantom Reference)

虚引用指向的对象在任何时候都可能被回收,甚至在 GC 之前就已经被回收了。虚引用主要用于跟踪对象被垃圾回收的状态,当虚引用指向的对象被回收时,JVM 会将该引用添加到与之关联的 ReferenceQueue 中。

代码示例:

Copy CodeObject obj = new Object();ReferenceQueue<Object> queue = new ReferenceQueue<>();PhantomReference<Object> phantomRef = new PhantomReference<>(obj, queue); // 虚引用

标签: #java的引用类型有哪些