ThreadLocal引起內存泄露總結

       我們都知道ThreadLocal能給每一個線程創建一個副本,確保多個線程訪問資源的安全性。但是ThreadLocal使用不當會造成內存泄漏。首先分析一下ThreadLocal內存泄漏原理。

ThreadLocal底層其實是一個ThreadLocalMap,是以<key, value>形式存儲變量副本的。但是由於key對象使用的是弱引用,所以JVM每次GC都會回收key對象。導致key對象爲null。但是value值還一直存在堆內存中。就會引起堆內存泄露。

爲避免ThreadLocal 出現內存泄露,每次使用完成後必須調用remove()方法將其釋放。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章