Java中的强引用还有弱引用‘
时间: 2024-04-11 12:29:06 浏览: 70
Java中的引用类型主要有四种:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。
强引用是最常见的引用类型,当一个对象被强引用关联时,垃圾回收器不会回收该对象,即使内存不足时也不会回收。例如:
```
Object obj = new Object();
```
这里的obj就是一个强引用,只有当obj超出作用域或者显式置为null时,对象才会被垃圾回收器回收。
软引用是用来描述一些还有用但并非必需的对象。在系统内存不足时,垃圾回收器会回收软引用对象,释放内存以供其他更重要的对象使用。可以使用java.lang.ref.SoftReference类来创建软引用。例如:
```
SoftReference<Object> softRef = new SoftReference<>(new Object());
```
在内存不足时,垃圾回收器会根据软引用对象的实际情况决定是否回收。
弱引用也是用来描述一些非必需对象,但是比软引用更弱。在垃圾回收器进行垃圾回收时,无论内存是否充足,都会回收弱引用对象。可以使用java.lang.ref.WeakReference类来创建弱引用。例如:
```
WeakReference<Object> weakRef = new WeakReference<>(new Object());
```
当对象只被弱引用关联时,垃圾回收器会在下一次垃圾回收时将其回收。
虚引用是最弱的一种引用关系,几乎没有直接访问价值。虚引用的主要作用是在对象被回收时收到系统通知。可以使用java.lang.ref.PhantomReference类来创建虚引用。
总结来说,强引用是最常见的引用类型,只有在引用关系结束后才会被回收;软引用在内存不足时会被回收;弱引用在垃圾回收时会被回收;虚引用几乎没有直接访问价值,主要用于对象回收的通知。
阅读全文