禁用特定方法/类的Java JIT?

Ral*_*alf 9 java jit jvm jvm-hotspot

我在Java应用程序中遇到问题,JIT破坏了代码.如果我禁用JIT,一切正常,但运行速度慢10-20倍.

有没有办法为特定方法或类禁用JIT?

编辑:我正在使用Ubuntu 10.10,获得相同的结果:

OpenJDK Runtime Environment (IcedTea6 1.9) (6b20-1.9-0ubuntu1)
OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode)
Run Code Online (Sandbox Code Playgroud)

和:

Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)

Ral*_*alf 8

以下选项适用于我的JVM,以排除特定方法:

-X:CompileCommand=exclude,the/package/and/Class,methodName
Run Code Online (Sandbox Code Playgroud)

  • Sun/Oracle Java 6 及更高版本使用 `-XX:CompileCommand` 选项。请参阅 [`java` 选项了解更多信息](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html),特别适用于 v8。 (2认同)

soc*_*soc 6

是的,有一个.您可以在启动时提供要排除JIT编译的受影响的类:

-Xjit:exclude={package/class.method|package/class.method}
Run Code Online (Sandbox Code Playgroud)

  • 我得到"无法识别的选项:-Xjit:exclude = {...}无法创建Java虚拟机." (2认同)
  • -X选项是非标准的.它们可能会在不同版本之间进行更改,并且依赖于您的JVM (2认同)