最近使用佇列存放資料,發生了一次gc問題,這裡記錄一下。
開始使用定長阻塞佇列,程式執行正常。
blockingqueuequeue = new arrayblockingqueue<>(2000);
之後再阻塞佇列中存放collection物件,出現gc。
blockingqueue> queue = new arrayblockingqueue<>(2000);
以為是collection物件問題,但之後發現是寫入資料過多,阻塞佇列內資料量過大出現的gc,長度改小後該問題消失。
blockingqueue> queue = new arrayblockingqueue<>(200);
問題,阻塞佇列最大能存放多大的資料。 GC問題排查
一 使用jps檢視執行緒id 二 使用jstat gc 3331 250 20檢視gc情況,一般比較關注perm區的情況,檢視gc的增長情況。三 使用jstat gccause 額外輸出上次gc原因 四 使用jmap dump format b,file heapdump 3331生成堆轉儲檔案 五...
GC 相關問題
1 美團經典文章 2 參考文章 3 gc 概念 4 cms gc日誌詳細介紹 5 gc root的定義 併發標記和重新標記兩個階段中間還增加了兩個階段 cms concurrent preclean start 併發預清理階段和 cms concurrent abortable preclean s...
等待佇列 阻塞非阻塞
阻塞 裝置驅動不阻塞,使用者想獲取裝置資源只能不停的查詢,這無謂的消耗cpu資源。而阻塞訪問,不能獲取資源的程序將進入休眠,它將cpu資源 禮讓 給其他程序 喚醒程序的地方最大可能發生在中斷裡面,因為硬體資源獲得的同時往往伴隨著乙個中斷 定義頭 wait queue head t queue 初始化...