如何找出运行 java 程序时使用的 JIT 名称

San*_*k.P 5 java jit

有没有任何命令或类似的东西可以知道运行java程序时使用的JIT的名称?

aio*_*obe 3

(此答案适用于 OpenJDK Hotspot)

您应该能够获取-XX:+LogCompilation包含以下行的日志文件(hotspot_pid<PID>.log,在启动目录中)

<nmethod compile_id='2'编译器='C1' level='3' ...

注意:LogCompilation是诊断 VM 选项。因此,您需要在其前面加上 来启用它 -XX:+UnlockDiagnosticVMOptions。用于运行类文件的脚本行如下所示:

java -XX:+UnlockDiagnosticVMOptions -XX:+LogCompilation MyClass

有关更多详细信息,请参阅 Oracle 文章Understanding Java JIT Compilation with JITWatch, Part 1

请注意,在一次执行期间可能有多个不同的 JIT 正在运行。