有没有办法关闭JIT编译器,这样做会对性能产生影响吗?

时间:2015-12-16 15:31:19

标签: jvm interpreter bytecode compiler-optimization jit

Java程序JIT的意义是什么,它是否使执行速度更快或者是否存在不是JIT的字节码?

4 个答案:

答案 0 :(得分:14)

有两种方法可以禁用JIT

-Djava.compiler=NONE 

或者这几乎不会编译任何东西

-XX:CompileThreshold=2000000000

或在IBM JVM上

-nojit

禁用JIT可能会大大减慢您的代码速度,例如50倍但并非总是如此。如果您花费大部分时间进行IO或GUI更新,您可能会发现它没什么区别。

答案 1 :(得分:1)

对于IBM,正确的选项是-Xnojit或-Xint

答案 2 :(得分:1)

doc

-Xint

以仅解释模式运行应用程序。禁止对本机代码进行编译,并且所有字节码均由解释器执行。

在Java 9之前,Compiler类已经知道java.compiler系统属性。在Java 9中,它被标记为@Deprecated

答案 3 :(得分:0)

在HotSpot VM中,可以使用选项-XX:-UseCompiler禁用JIT编译,该选项将跳过编译器线程初始化。

它是true by default

product(bool, UseCompiler, true,                                          
        "Use Just-In-Time compilation")