如何真正关闭分层编译?
How to truly turn off Tiered Compilation?
我的本地 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
但是,我仍然看到分层编译器出现在 boot.log 来自 JBoss:
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
但是它从来没有出现在 boot.log 中的 jvm 参数中 Jboss.
如果您想验证分层编译是否已关闭,只需 运行 您的应用程序 -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 环境仍在
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
但是,我仍然看到分层编译器出现在 boot.log 来自 JBoss:
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
但是它从来没有出现在 boot.log 中的 jvm 参数中 Jboss.
如果您想验证分层编译是否已关闭,只需 运行 您的应用程序 -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)
请注意,缺少表示等级的列