ReservedCodeCacheSize
(和InitialCodeCacheSize
)是Java VM熱點的(剛剛在時間)編譯器的選項。基本上它爲編譯器的代碼緩存設置了最大大小。
緩存可以變得豐滿,從而導致類似如下的警告:
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled.
Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize=
Code Cache [0x000000010958f000, 0x000000010c52f000, 0x000000010c58f000)
total_blobs=15406 nmethods=14989 adapters=362 free_code_cache=835Kb largest_free_block=449792
隨後當Java HotSpot(TM) Client VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated
這糟糕得多。
何時設置此選項?
- 具有熱點編譯器故障時
- 以減少由JVM所需的存儲器(因此冒着JIT編譯器故障)
通常你不改變此值。我認爲默認值是非常好的平衡,因爲這個問題只發生在極少數情況下(在我的經驗中)。
這篇文章的OP寫道:> -XX:ReservedCodeCacheSize = 32m預留代碼緩存大小(以字節爲單位) - 最大代碼緩存大小。 [Solaris 64位,amd64和-server x86:48m;在1.5.0_06和更早版本中,Solaris 64位和64位:1024m。]我只是想糾正在48m處提到的上限必須是錯字。這是2048米。 –