Java 如果-XX:+;UseCodeCache是否未使用冲洗?
我使用jconsole监视javaDB(derby),我的java版本是1.6.027 正如我在这篇文章中读到的那样:Java 如果-XX:+;UseCodeCache是否未使用冲洗?,java,jvm,jvm-arguments,java-opts,Java,Jvm,Jvm Arguments,Java Opts,我使用jconsole监视javaDB(derby),我的java版本是1.6.027 正如我在这篇文章中读到的那样: 我认为如果没有-XX:+UseCodeCacheFlushing -XX:+UseCodeCacheFlushing在1.7.0\u 4之前不会自动打开 但是jconsole显示CodeCache的使用率下降了,这让我很惊讶: 有什么解释吗?除了JIT编译方法之外,CodeCache中还有什么?原因可能仍然是选项:UseCodeCacheFlushing=true。 3版
- 我认为如果没有-XX:+UseCodeCacheFlushing
- -XX:+UseCodeCacheFlushing在1.7.0\u 4之前不会自动打开
有什么解释吗?除了JIT编译方法之外,CodeCache中还有什么?原因可能仍然是选项:UseCodeCacheFlushing=true。 3版本JDK的默认配置如下:
$ java -XX:+PrintFlagsFinal -version | grep CodeCacheFlush
bool UseCodeCacheFlushing = true {product}
java版本“1.8.0_25”
Java(TM)SE运行时环境(build 1.8.0_25-b18)
Java HotSpot(TM)64位服务器虚拟机(构建25.25-b02,混合模式)
java版本“1.7.0_79”
Java(TM)SE运行时环境(build 1.7.0_79-b15)
Java HotSpot(TM)64位服务器虚拟机(构建24.79-b02,混合模式)
java版本“1.7.0_51”
Java(TM)SE运行时环境(build 1.7.0_51-b13)
Java HotSpot(TM)64位服务器虚拟机(构建24.51-b03,混合模式)可能是由于某些方法未编译。感谢assylias,您的意思是因为“过度优化”或其他原因需要放弃某些方法吗?我从一篇JVM文章中读到,有时JVM会根据统计信息优化方法,这可能会切断一些很少发生的逻辑分支。在多态性的情况下,有一些方法或示例方法需要反编译-请参阅示例:。我不知道这是否是你观察到的原因——这只是一个猜测。
$ ./java -XX:+PrintFlagsFinal -version | grep CodeCacheFlush
uintx CodeCacheFlushingMinimumFreeSpace = 1536000 {product}
intx MinCodeCacheFlushingInterval = 30 {product}
bool UseCodeCacheFlushing = true {product}
$ java -XX:+PrintFlagsFinal -version | grep CodeCacheFlush
uintx CodeCacheFlushingMinimumFreeSpace = 1536000 {product}
intx MinCodeCacheFlushingInterval = 30 {product}
bool UseCodeCacheFlushing = true {product}