2016-03-07 81 views
0

在64位linux上,使用java8,运行java命令时,似乎所有3个选项-client/-server/-d64都使用了64位服务器编译器。JIT编译器 - 编译器选择选项

的问题是:64位的Linux与java8

  • 由于-client-server使用相同的编译器,它不会使任何差异,以指定的2个选项吗?
  • 对于一个长时间运行的java守护程序,最好是使用-server连同-XX:+TieredCompilation或者没有它,当在启动期间可以稍微慢一点。
+0

你错了。 '-client'和'-server'选择不同的JVM。 – EJP

+0

@EJP我认为这两个选项选择不同的JIT编译器,它将字节码编译为机器代码,这是在运行时间,从而导致2种类型的java进程具有不同的行为。由于jvm只是一个java进程,所以,你可以说他们选择了不同的jvms。 –

回答

2

看文件jre/lib/amd64/jvm.cfg。您可能会看到行

-server KNOWN 
-client IGNORE 

这意味着-client选项被忽略。 -server也不做任何事情,因为JDK 8 for x64只有一个包含C1和C2编译器的JVM,默认情况下分层编译处于打开状态。

与-XX:+ TieredCompilation或没有它

没关系,因为这个选项默认是开启的。 advanced compilation policy适用于客户级和服务器级应用程序。通常不需要手动关闭它。

+0

酷,让事情变得更容易。 –