ThreadLocal内存泄漏问题主要是因为ThreadLocal有个ThreadLocalMap他有个Entry内部类该类继承了WeakRefenrence类 他的构造方法把ThreadLocal做为弱引用当而value直接赋值 在垃圾回收时弱引用会直接被回收而他的值是强引用不会被回收 一直不回收导致内存泄漏
ThreadLocal的get方法 就是获取当前的线程然后通过getMap方法获取到ThreadLocalMap然后获取到数据Entry
set方法同理
用当前的ThreadLocal与Entry数组的长度减一做与运算获取的索引位置来获取到Entry