四种引用类型分别是:强,软,弱,虚
强引用
User user=new User()
把一个对象赋值给一个引用变量,这个引用变量就是一个强引用,一个对象被强引用变量引用时,他始终处于可达状态,不会被垃圾回收机制回收。所以他是造成Java内存泄漏的原因之一。
软引用
java.lang.ref.SoftReference
当内存不足时会被回收。软引用通常在对内存敏感的程序中,作为缓存使用。
弱引用
java.lang.ref.WeakReference
只有执行了垃圾回收,不管内存是否足够,总会回收改对象占用的内存。可以解决内存泄漏问题,ThreadLocal就是基于弱引用解决内存泄漏问题
虚引用
java.lang.ref.PhantomReference
不能单独使用,必须和引用队列联合使用,主要作用是跟踪垃圾回收的状态。
还能用于 管理堆外内存(操作系统的内存)