如何禁用 JIT 编译器的内部函数使用?

How to disable intrinsics usage for the JIT compiler?

我正在 JVM 上做一些性能测试,我想衡量内在函数使用的影响。

我想在不进入解释模式的情况下对某些方法禁用 JIT 内部函数。有没有办法做到这一点 ?谢谢

使用

java -XX:+UnlockDiagnosticVMOptions -XX:DisableIntrinsic=_<method_name>[,...]

例如

java -XX:+UnlockDiagnosticVMOptions -XX:DisableIntrinsic=_equals,_hashCode

正如@apangin 所注意到的,您可以先使用 -XX:+PrintIntrinsics 来查看哪些方法实际上在您的测试中被内化并禁用它们。