java中的四种引用
强引用>软引用>弱引用>虚引用
1、强引用
比如:
Object object = new Object();
就是强引用,垃圾回收的时候不会被回收掉,在内存不足的时候也不会被回收掉,会抛出OOM(Out of Memory)异常。
2、软引用
比如:
Object object = new Object()
SoftReference
在内存不足的时候发生垃圾回收就会被回收掉,然后软引用就会被放入引用队列里面,用来把占用的其他资源释放掉。
应用于缓存。(代码来源:https://blog.csdn.net/qq87034246/article/details/80710254 注释里面添加了自己的理解)
public class Cache {
private Map
3、弱引用
无论内存是否足够,发生了垃圾回收就会被回收掉。
Object object = new Object()
WeakReference sf = new WeakReference<>(object);
4、虚引用
虚引用必须和队列一起使用,虚引用不能获得引用的对象,随时会被回收。
总结
- 引用队列的作用
队列就是为了在当前弱引用或者虚引用,引用的对象被销毁以后就会把弱引用或者虚引用放到引用队列里面,引用队列用来释放虚引用或者弱引用分别引用的对象关联的外部资源,垃圾回收释放的是对象时java内部资源,引用队列用来按顺序释放外部资源