开发者社区> 问答> 正文

[@徐雷frank][¥20]关于ThreadLocal的内存泄漏

请问一下如何避免在使用ThreadLocal时产生的内存泄漏问题?

展开
收起
谷粑糖 2018-11-13 14:47:56 1908 0
1 条回答
写回答
取消 提交回答
  • Java布道者

    ThreadLocal 底层使用的是ThreadLocalMap,用于保存数据时Map的key 是当前线程,所以可以理解为针对不同线程能保存不同的Value,因为ThreadLocalMap中的Entry继承了WeakReference,若引用的目的在于不影响Entry的垃圾回收;对于ThreadLocalMap,一般是单例或全局变量,生命周期会很长,如果ThreadLocalMap中的Entry迟迟不释放并且每次会有新的线程变量加入,会导致内存泄露,如何避免因使用ThreadLocal引起的内存泄露,必须在使用ThreadLocal变量后显示删除ThreadLocal中的变量,显示调用remove方法,通常做法是放到finally代码块中执行。

    2019-07-17 23:13:52
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载