前置知识:强引用,软引用,弱引用,虚引用 (请自行百度)
发生内存泄露的原因:
1. 若 threadLocal 的强引用失效
2. 发生垃圾回收
3. Entry 的 key 为弱引用,所指向的 threadLocal 会被回收,key 被置为 null
4. threadLocalMap 无法通过该 key 访问 value
5. 存储对象被 Entry.value 强引用也不会被回收
6. 存储对象既无法被访问,也无法被回收,发生内存泄漏
前置知识:强引用,软引用,弱引用,虚引用 (请自行百度)
发生内存泄露的原因:
1. 若 threadLocal 的强引用失效
2. 发生垃圾回收
3. Entry 的 key 为弱引用,所指向的 threadLocal 会被回收,key 被置为 null
4. threadLocalMap 无法通过该 key 访问 value
5. 存储对象被 Entry.value 强引用也不会被回收
6. 存储对象既无法被访问,也无法被回收,发生内存泄漏