Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何真正关闭分层编译?_Java_Jboss_Jvm - Fatal编程技术网

Java 如何真正关闭分层编译?

Java 如何真正关闭分层编译?,java,jboss,jvm,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的建议关闭分层编译器,现在有了jvm参数(带有-XX:-tieredcomilation): 但是,我仍然可以在JBoss的boot.log中

我的本地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的建议关闭分层编译器,现在有了jvm参数(带有
-XX:-tieredcomilation
):

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

java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
我想知道热点64位分层编译器是否意味着
-XX:-tieredcomilation
没有生效?那么,我如何才能真正关闭分层编译呢

更新
奇怪的是,我在jvm参数中添加了
-server
,但是它从来没有出现在Jboss的boot.log中的jvm参数中。

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

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

第5列表示编译层

在禁用分层编译的情况下,它应该如下所示:

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

请注意,表示层缺失的列不确定编译器,但表示64位热点的是
-server
。@chrylis谢谢,现在JDK支持
-client
-server
-tiered
。分层是一个智能编译器,可以混合服务器和客户端。它看起来是-tiered和-server(从jboss日志中)一起隐含的。尝试添加
-XX:+PrintFlagsFinal
,看看
tieredcomployment
标志的有效值是多少。可能是其他一些设置隐式地重新启用了它。但是-为什么要关闭它?没有它,服务器JVM的性能非常糟糕,@skaffman谢谢,我有一个愚蠢的问题:我如何才能将-XX:+PrintFlagsFinal结果输出到一个文件中?由于Jboss的性能问题,我不得不关闭分层编译器。分层编译使事情更快,而不是更慢。关掉它看起来是个错误。您尝试过使用
-server
?谢谢!我发现这种方法可以有效地验证分层编译器是否工作,-XX:-tieredcomployment是否生效。一个愚蠢的问题:如何将上面的“打印编译”输出到一个文件中?不确定这是否有效,但请尝试
-XX:+UnlockDiagnosticVMOptions-XX:+LogVMOutput-XX:LogFile=debug.log
。或者直接重定向stdout/stderr@Dreamer有一个选项
-XX:+UnlockDiagnosticVMOptions-XX:+LogCompilation-XX:LogFile=./sandbox.log
 2087 1856     n 0       sun.nio.ch.WindowsSelectorImpl$SubSelector::poll0 (native)   
20009 2146   !   4       java.io.PrintWriter::println (27 bytes)
12001  355   !         java.io.PrintWriter::write (58 bytes)