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