ThreadLocalMap中的key是弱引用,如果被GC了,那么线程再去get数据岂不是就没有了?
还是说ThreadLocalMap只能存一些缓存数据,被GC了就重新生成。
ThreadLocalMap中的key是弱引用,如果被GC了,那么线程再去get数据岂不是就没有了?
还是说ThreadLocalMap只能存一些缓存数据,被GC了就重新生成。
如果被GC了,那么线程再去get数据岂不是就没有了?
如果你还能去get数据,说明还有对ThreadLocal的强引用,那怎么会被GC呢...
不过如果你申明ThreadLocal变量就是用的弱引用,那当我没讲。(这个得算错误使用方法?)
4 回答1.8k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
4 回答2.4k 阅读
2 回答847 阅读✓ 已解决
2 回答1.4k 阅读
引用的关系是
Thread
->ThreadLocalMap
->Entity
->弱引用ThreadLocal
和数据
所以:
ThreadLocal
的引用并且没有调用remove
方法,那么只要线程还在,ThreadLocal
和数据
就会一直被引用无法回收,就是内存泄漏了remove
方法的用户做清理工作…