开发者社区 问答 正文

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

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

展开
收起
谷粑糖 2018-11-13 14:47:56 1945 分享
分享
版权
举报
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 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答标签:
问答地址: