强引用
强引用一般指我们new的对象存在的引用软引用
软引用,指SoftReference 创建的对象指向的引用,一般在jvm内存不足时被释放;弱引用
弱引用,指WeakReference 创建的对象指向的引用,一般gc时都会被优先回收;虚引用
虚引用,是一种形同虚设的引用,主要用来跟踪对象被垃圾回收的活动
ThreadLocal 底层用的是ThreadLocalMap,其中threadLocalMap key存的是当前线程对象的虚拟引用,value存的是对应的值;因为是虚引用,所以一定会被回收掉,但是对于threadMap现在存的就是key为null,value不为null的entry项,这个value对象的值是一个强引用,不会被回收,所以需要我们使用完threadLocl后及时remove掉,避免内存泄漏的情况;