1. 程式人生 > >JVM引數:-XX:ReservedCodeCacheSize

JVM引數:-XX:ReservedCodeCacheSize

通過笨神的分享整理筆記:
這個引數主要設定codecache的大小,比如我們jit編譯的程式碼都是放在codecache裡的,所以codecache如果滿了的話,那帶來的問題就是無法再jit編譯了,而且還會去優化。因此大家可能碰到這樣的問題:cpu一直高,然後發現是編譯執行緒一直高(系統執行到一定時期),這個很大可能是codecache滿了,一直去做優化。
程式碼快取預設大小:
這裡寫圖片描述
可以通過在標準輸出日誌裡檢視是否有codecache的關鍵字來表示已滿。
這裡寫圖片描述

附網上查詢的關於這個引數的一些描述:
JVM一個有趣的,但往往被忽視的記憶體區域是“程式碼快取”,它是用來儲存已編譯方法生成的原生代碼。程式碼快取確實很少引起效能問題,但是一旦發生其影響可能是毀滅性的。如果程式碼快取被佔滿,JVM會打印出一條警告訊息,並切換到interpreted-only 模式:JIT編譯器被停用,位元組碼將不再會被編譯成機器碼。因此,應用程式將繼續執行,但執行速度會降低一個數量級,直到有人注意到這個問題。就像其他記憶體區域一樣,我們可以自定義程式碼快取的大小。相關的引數是-XX:InitialCodeCacheSize 和-XX:ReservedCodeCacheSize,它們的引數和上面介紹的引數一樣,都是位元組值。

以下是通過jconcole檢視:
這裡寫圖片描述