如何真正关闭分层编译?

Dre*_*mer 4 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)
Run Code Online (Sandbox Code Playgroud)

当我配置Jboss时,我试图关闭Tiered Compiler,就像Oracle 在这里建议的那样,现在有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 
Run Code Online (Sandbox Code Playgroud)

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

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

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

UPDATE

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

the*_*472 7

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

输出应该看起来像这样[用java8测试]

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

〜第5列表示编译层.

使用分层编译时,它应如下所示:

12001  355   !         java.io.PrintWriter::write (58 bytes)
Run Code Online (Sandbox Code Playgroud)

请注意,缺少指示层的列

  • 不确定这是否有效,但请尝试`-XX:+ UnlockDiagnosticVMOptions -XX:+ LogVMOutput -XX:LogFile = debug.log`.或者只是重定向stdout/stderr. (2认同)