ThreadLocalMap中的key是弱引用,如果被GC了,那么线程再去get数据岂不是就没有了?
ThreadLocalMap中的key是弱引用,如果被GC了,那么线程再去get数据岂不是就没有了?
还是说ThreadLocalMap只能存一些缓存数据,被GC了就重新生成。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
引用的关系是
Thread
->ThreadLocalMap
->Entity
->弱引用ThreadLocal
和数据
所以:
ThreadLocal
的引用并且没有调用remove
方法,那么只要线程还在,ThreadLocal
和数据
就会一直被引用无法回收,就是内存泄漏了remove
方法的用户做清理工作…如果你还能去get数据,说明还有对ThreadLocal的强引用,那怎么会被GC呢...
不过如果你申明ThreadLocal变量就是用的弱引用,那当我没讲。(这个得算错误使用方法?)