codecache代碼緩存區,主要存放JIT所編譯的代碼,同時還有Java所使用的本地方法代碼也會存儲在codecache中.不一樣的jvm、不一樣的啓動方式codecache的默認值大小也不盡相同。java
JVM 版本和啓動方式緩存 |
默認 codeCache大小oracle |
32-bit client, Java 8app |
32 MBjvm |
32-bit server, Java 8*post |
48M優化 |
32-bit server with Tiered Compilation, Java 8spa |
240 MBcode |
64-bit server, Java 8*orm |
48M |
64-bit server with Tiered Compilation, Java 8 |
240 MB |
32-bit client, Java 7 |
32 MB |
32-bit server, Java 7 |
48 MB |
32-bit server with Tiered Compilation, Java 7 |
96 MB |
64-bit server, Java 7 |
48 MB |
64-bit server with Tiered Compilation, Java 7 |
96 MB |
* jdk8中server模式默認採用分層編譯方式,若是須要關閉分層編譯,須要加上啓動參數-XX:-TieredCompilation
相關參數
-XX:ReservedCodeCacheSize設置codeCache的size大小,-XX:+UseCodeCacheFlushing啓用code cache的回收機制。
因爲JIT是隨着代碼被調用的次數達到CompileThreshold以後進行的,所以,codecache使用也會隨之增長,常見的問題就是,隨着時間的推移應用佔用CPU會隨之增高,請求相應變慢等問題,這時就須要考慮codecache的問題了。
相關優化請參考:
https://docs.oracle.com/javase/8/embedded/develop-apps-platforms/codecache.htm
http://blog.leanote.com/post/zenglingshu/%E4%B8%80%E4%B8%AART%E4%B8%8B%E9%99%8D%E7%9A%84%E5%A5%87%E6%80%AACase%5B%E8%BD%AC%5D