📅  最后修改于: 2020-11-13 05:36:00             🧑  作者: Mango
JVM支持五个编译级别-
如果要禁用所有JIT编译器并仅使用解释器,请使用-Xint。
使用-client和-server激活相应的模式。
客户端编译器(C1)比服务器编译器(C2)更快开始编译代码。因此,到C2开始编译时,C1就已经编译了代码段。
但是,在等待时,C2比C1更加了解代码。因此,等待优化所产生的偏移量可以用来生成更快的二进制文件的时间。从用户的角度来看,要在程序的启动时间和程序运行所花费的时间之间进行权衡。如果启动时间很重要,则应使用C1。如果期望该应用程序长时间运行(通常是服务器上部署的应用程序),则最好使用C2,因为它会生成更快的代码,从而大大抵消了任何额外的启动时间。
对于IDE(NetBeans,Eclipse)和其他GUI程序之类的程序,启动时间至关重要。 NetBeans可能需要一分钟或更长时间才能启动。启动诸如NetBeans之类的程序时,将编译数百个类。在这种情况下,C1编译器是最佳选择。
请注意,有C1-32b和64b两个版本。 C2仅出现在64b中。
在Java的旧版本中,用户可以选择以下选项之一-
它来自Java7。它使用C1编译器启动,并且随着代码变热,切换到C2。可以使用以下JVM选项激活它:-XX:+ TieredCompilation。在Java 7中,默认值设置为false;在Java 8中,默认值设置为true 。
在五个编译层中,分层编译使用1-> 4-> 5 。