【发布时间】:2015-05-21 10:21:25
【问题描述】:
我正在对JVM 进行一些性能测试,我想测量内在函数使用的影响。
我想在不进入解释模式的情况下禁用 JIT 对某些方法使用内在函数。有没有办法做到这一点 ?谢谢
【问题讨论】:
我正在对JVM 进行一些性能测试,我想测量内在函数使用的影响。
我想在不进入解释模式的情况下禁用 JIT 对某些方法使用内在函数。有没有办法做到这一点 ?谢谢
【问题讨论】:
使用
java -XX:+UnlockDiagnosticVMOptions -XX:DisableIntrinsic=_<method_name>[,...]
例如
java -XX:+UnlockDiagnosticVMOptions -XX:DisableIntrinsic=_equals,_hashCode
正如@apangin 所注意到的,您可以先使用-XX:+PrintIntrinsics 来查看哪些方法实际上在您的测试中被内置并禁用它们。
【讨论】:
Compile::make_vm_intrinsic 始终返回 NULL 以立即禁用所有内在函数的情况下构建自定义 HotSpot 可能会更容易。
-XX:+PrintIntrinsics 打印所有已编译的内在函数,然后使用-XX:DisableIntrinsic= 禁用它们。