如果不使用-XX:+ UseCodeCacheFlushing,是否会刷新JVM中的CodeCache?

时间:2013-12-20 04:03:55

标签: java jvm-arguments

我使用jconsole监视javaDB(derby),我的java版本是1.6.0_27。

正如我在这篇文章中读到的那样:CodeCache is full. Compiler has been disabled, 我认为在没有 -XX:+ UseCodeCacheFlushing 的情况下不会刷新CodeCache,并且 -XX:+ UseCodeCacheFlushing 在1.7.0_4之前不会自动打开。

但是jconsole显示CodeCache的使用率下降,这让我感到惊讶:

CodeCache Usage Falls Down

对此有何解释?
除了JIT编译方法之外,CodeCache中还有什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

原因可能仍然是选项:UseCodeCacheFlushing = true。 以下3版本JDK的默认配置:

Dim result = If(Convert.IsDBNull(val), "", val)

java版" 1.8.0_25" Java(TM)SE运行时环境(版本1.8.0_25-b18) Java HotSpot(TM)64位服务器VM(内置25.25-b02,混合模式)

$ java -XX:+PrintFlagsFinal -version | grep CodeCacheFlush
 bool UseCodeCacheFlushing                      = true                                {product}

java version" 1.7.0_79" Java(TM)SE运行时环境(版本1.7.0_79-b15) Java HotSpot(TM)64位服务器VM(内置24.79-b02,混合模式)

$ ./java -XX:+PrintFlagsFinal -version | grep CodeCacheFlush
uintx CodeCacheFlushingMinimumFreeSpace         = 1536000         {product}
 intx MinCodeCacheFlushingInterval              = 30              {product}
 bool UseCodeCacheFlushing                      = true            {product}

java version" 1.7.0_51" Java(TM)SE运行时环境(版本1.7.0_51-b13) Java HotSpot(TM)64位服务器VM(内置24.51-b03,混合模式)