java中提供了4个级别的引用类型
strong(强引用)、soft(软引用)、weak(弱引用)、phantom(虚引用)
以下对四中类型简单介绍
1、strong(强引用)
例如 Object object = new Object()
此时的object对象就是一个强引用对象
强引用的对象特点是:永远不会被jvm垃圾回收机制回收,就算是抛出异常此对象也会存在,并且可以直接访问
2、soft(软引用)
Object object = new Object();
SoftReference<Object> soft= new SoftReference<Object>(object);
软引用的对象特点是:发生内存不足的时候会回收,适合做缓存,有效的避免内存泄漏
3、weak(弱引用)
Object object = new Object();
WeakReference<Object> reference = new WeakReference<Object>(object );
弱引用的对象特点是:当jvm垃圾回收的时候,无论内存是否充足,只要对象为空就会进行回收,内存不足也会回收
4、phantom(虚引用)
Object object = new Object();
PhantomReference<Object> reference = new PhantomReference<Object>(object );
虚引用的特点是:只要执行垃圾回收,无论内存是否足够,对象是否为空,都会回收,因此也有人称它为“幽灵引用”
由上我们可以看出
jvm垃圾机制回收的顺序是:虚引用>>>弱引用>>>软引用>>>强引用。(从左往右优先回收)