【问题标题】:How to disable intrinsics usage for the JIT compiler?如何禁用 JIT 编译器的内在函数使用?
【发布时间】:2015-05-21 10:21:25
【问题描述】:

我正在对JVM 进行一些性能测试,我想测量内在函数使用的影响。

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

【问题讨论】:

    标签: java jvm jit


    【解决方案1】:

    使用

    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= 禁用它们。
    • 顺便说一句,我创建了一个table of all JVM intrinsics
    • 那是 JDK 7u80 内在函数。现在JDK 8u45 intrinsics.
    • @Bionix1441 不幸的是,现有的 JVM 中没有这样的开关。因此,您必须修补 JVM 或一一禁用它们。
    猜你喜欢
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2011-07-17
    • 2011-09-03
    • 2013-07-14
    相关资源
    最近更新 更多