static class Entry extends WeakReference<ThreadLocal<?>> {
Object value;
...
}
一般来说,程序中会强引用ThreadLocal对象,当程序不再引用,等到下次gc则ThreadLocal对象被回收,WeakReference指向null,get(),set(),remove()的时候都会清除key为null的value和Entry对象,所以OOM,内存泄漏都在于没有及时回收ThreadLocal或者说某些线程不需要了可以单独回收