1. 程式人生 > >ThreadLocal引起記憶體洩露總結

ThreadLocal引起記憶體洩露總結

       我們都知道ThreadLocal能給每一個執行緒建立一個副本,確保多個執行緒訪問資源的安全性。但是ThreadLocal使用不當會造成記憶體洩漏。首先分析一下ThreadLocal記憶體洩漏原理。

ThreadLocal底層其實是一個ThreadLocalMap,是以<key, value>形式儲存變數副本的。但是由於key物件使用的是弱引用,所以JVM每次GC都會回收key物件。導致key物件為null。但是value值還一直存在堆記憶體中。就會引起堆記憶體洩露。

為避免ThreadLocal 出現記憶體洩露,每次使用完成後必須呼叫remove()方法將其釋放。