亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中ThreadLocal內存泄漏的解決方法

發布時間:2021-05-06 12:32:45 來源:億速云 閱讀:291 作者:小新 欄目:編程語言

小編給大家分享一下java中ThreadLocal內存泄漏的解決方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

java基本數據類型有哪些

Java的基本數據類型分為:1、整數類型,用來表示整數的數據類型。2、浮點類型,用來表示小數的數據類型。3、字符類型,字符類型的關鍵字是“char”。4、布爾類型,是表示邏輯值的基本數據類型。

在線程中有一種方法,頻繁被大家所調用,那就是 ThreadLocal。不過在內存的處理上,ThreadLocal也會遇到比較棘手的問題,總是會產生一些內存的泄漏。

ThreadLocalMap的靜態內部類Entry:

    static class Entry extends WeakReference<ThreadLocal<?>> {
        /** The value associated with this ThreadLocal. */
        Object value;
 
        Entry(ThreadLocal<?> k, Object v) {
            super(k);
            value = v;
        }
    }

ThreadLocalMap使用靜態內部類Entry實現<k,v>存儲,而Entry繼承WeakReference類,所以ThreadLocalMap中的key其實是ThreadLocal的一個弱引用。

 正因為ThreadLocalMap以ThreadLocal的弱引用作為key,在這個ThreadLocal沒有外部強引用的時候,會被GC。這時候,ThreadLocalMap會出現一個key為null的Entry,理所當然的,這個Entry的value將永遠沒辦法被訪問到。

在這種情況下,如果當前工作線程一直沒有結束,那這個key為null的value因為被Entry強引用,而Entry被當前線程的ThreadLocalMap強引用,導致這個value永遠無法被GC,造成內存泄漏。

2、解決辦法

ThreadLocalMap的cleanSomeSlots(),expungeStaleEntry()方法都能清除key為null的value。 在ThreadLocal的set(),get(),remove()方法中,都會調用cleanSomeSlots()或expungeStaleEntry()來清除ThreadLocalMap中所有key為null的value。

以上是“java中ThreadLocal內存泄漏的解決方法”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德昌县| 沂水县| 莱芜市| 忻州市| 黑河市| 广丰县| 乾安县| 夏河县| 新巴尔虎左旗| 昂仁县| 确山县| 那坡县| 丰城市| 马边| 邹城市| 吉林省| 翼城县| 辽中县| 新乡县| 炎陵县| 丹阳市| 长沙县| 尖扎县| 武山县| 稻城县| 梓潼县| 从化市| 阜南县| 云和县| 平定县| 体育| 桂林市| 阳信县| 富锦市| 正宁县| 合山市| 漠河县| 曲靖市| 福建省| 凤庆县| 东宁县|