一 强引用
强引用:我们见到的最多。。比如:Object a = new Object(); 在实际代码里,这种引用类型处处可见。。。。强引用什么时候被回收,在这种情况下,即使内存空间不足,它也不会被gc回收,而是会报OutOfMemoryError的错误,当把 o置为null的时候,这个时候才解除了强引用,才会被gc在合适的时间回收
二、软引用
软引用就是当内存充足的时候。它不会被垃圾回收器回收,当内存空间不够用的时候,软引用就会被垃圾回收器回收,你要理解软引用SoftReference 是一个对象,该对象里存放着数据
执行之前设置下堆内存大小
三、弱引用
弱引用就是不管内存中是否有空间,只要遇到垃圾回收器,就会被回收。用途: 是为了解决某些地方的内存泄露的问题。用在 ThreadLocal里面
四、虚引用
虚引用会跟一个引用队列相关联使用,它的原理就是,当一个虚引用指向的对象被回收的时候,它会把一个信息添加到跟这个虚引用相关联的这个队列中。还有就是虚引用的get方法,返回的永远是 null;用途: 管理堆外内存 netty NIO