首页 / 科技周边 / 正文

threadlocal内存泄露的原因 

ThreadLocal内存泄露的原因主要是因为ThreadLocalMap这个Map数据结构中的Key为一个弱引用对象。当发生GC时,弱引用对象会被清除,但是对应的Value还在,这个Value就成了一个不可用的对象,但是还被Map所持有,因此就会发生“内存泄露”。在某些情况下,如使用线程池操作ThreadLocal对象,线程不会销毁,线程中的LocalVariable对象也不会释放,从而导致内存泄露。为了避免内存泄露,可以使用ThreadLocal提供的remove方法清除线程中对象的引用。

如有侵权请及时联系我们处理,转载请注明出处来自