JVM生成的native code存放的内存空间称之为Code Cache;JIT编译、JNI等都会编译代码到native code,其中JIT生成的native code占用了Code Cache的绝大部分空间
InitialCodeCacheSize
- lnitialCodeCacheSize是CodeCache初始化的时候的大小,但是随着CodeCache的增长不会降下来,但是CodeCache里的block是可以复用的
ReservedCodeCacheSize
- ReservedCodeCacheSize是设置CodeCache最大的内存值,其默认值是48M,如果开启了分层编译(
TieredCompilation
)的话,默认是240M,同时ReservedCodeCacheSize不能超过2G
Xmaxjitcodesize
- Xmaxjitcodesize和ReservedCodeCacheSize参数是等价的,比如
-Xmaxjitcodesize200M
和-XX:ReservedCodeCacheSize=200M
是一样的意思
CodeCacheMinimumFreeSpace
- CodeCacheMinimumFreeSpace表示当CodeCache的可用大小不足这个值的时候,就会进行code cache full的处理
-
ReservedCodeCacheSize必须不小于InitialCodeCacheSize
-
code cache full一旦被处理,将会打印"CodeCache is full"的日志,但是这条日志只会打印一次