We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
ThreadLocalMap 是通过 WeakReference 包装了 TreadLocal ,取的是 TreadLocal 的弱引用 对象
那么在 GC 的时候就会造成 TreadLocal 肯定就会被回收掉。 Entry 对象的 key 就为 null 了,然后 value 却是强引用 无法回收。
如果这个方法又长时间不结束的话,就有会这么一条 强引用的 GCROOT 引用链 的存在:
Thread Ref -> Thread -> ThreaLocalMap -> Entry -> value ; value 就一直不会被回收, 因为它的 另一半 key 已经不存在了,所以它也不会被调用。 这就造成了内存泄漏。