开发者社区> 问答> 正文

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

谷粑糖 2018-11-13 14:47:56 434

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

分享到
取消 提交回答
全部回答(1)
  • 恺森
    2019-07-17 23:13:52

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

    0 0
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章