java - 如何真正关闭分层编译?

标签 java jboss jvm

我本地的Java环境还在

java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01, mixed mode)

当我配置 Jboss 时,我尝试按照 Oracle 的建议关闭分层编译器 here ,现在有 jvm 参数(使用 -XX:-TieredCompilation):

VM Arguments: -XX:+UseCompressedOops -Dprogram.name=standalone.bat 
-XX:-TieredCompilation -XX:+PrintGCDetails -Xloggc:E:\serverLog\jvm.log
-Xms1303M -Xmx1303M -XX:MaxPermSize=256M 
-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 
-Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true 
-Djboss.modules.system.pkgs=org.jboss.byteman 
-Djboss.server.default.config=standalone.xml -Dorg.jboss.boot.log.file=E:\JAVA
\JBOSS\EAP-6.0.0.GA\jboss-eap-6.0\standalone\log\boot.log 
-Dlogging.configuration=file:E:\JAVA\JBOSS\EAP-6.0.0.GA\jboss-eap-6.0
\standalone/configuration/logging.properties 

但是,我仍然看到分层编译器出现在 JBoss 的 boot.log 中:

java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.management.compiler = HotSpot 64-Bit Tiered Compilers

我想知道 HotSpot 64-Bit Tiered Compilers 是否意味着 -XX:-TieredCompilation 没有生效?那怎样才能真正关闭分层编译呢?

更新

奇怪的是我在 jvm 参数中添加了 -server 但是它从未出现在 Jboss 的 boot.log 中的 jvm 参数中。

最佳答案

如果您想验证分层编译是否已关闭,只需使用 -XX:+PrintCompilation 运行您的应用程序即可。

输出应该大致如下所示[用 java8 测试]

 2087 1856     n 0       sun.nio.ch.WindowsSelectorImpl$SubSelector::poll0 (native)   
20009 2146   !   4       java.io.PrintWriter::println (27 bytes)

~第 5 列表示编译层。

关闭分层编译后它应该是这样的:

12001  355   !         java.io.PrintWriter::write (58 bytes)

请注意,缺少指示层的列

关于java - 如何真正关闭分层编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30021577/

相关文章:

java - 如何衡量Java中数据库的性能?

java - 如何将bean作为后台服务运行?

java - 为什么我的命令行指令不弹出 CD?

java - JBoss EAP 7 和 Ifinispan

tomcat - JBWEB000250 : Child container with name already exists

java - 关于 JVM 信号处理

javascript - 在不运行小程序的情况下确定客户端计算机上的 jvm 位数

java - 数组实现代码

java - 我可以在一个应用程序中同时实现 SAML 和基本的 Spring Security 吗?

Java 打印编写器 : Writing to the same file over time