Board logo

标题: IBM JVM for Linux JIT 诊断简介(5) [打印本页]

作者: look_w    时间: 2018-5-9 20:13     标题: IBM JVM for Linux JIT 诊断简介(5)

如何寻找有问题的 JIT 优化选项?在上一节的最后,您应该早已可以确定跳过所选择的方法、类或包防止了问题的出现。在本节中,您将找到有问题的 JIT 优化选项,在对上一节中确定的方法集合或单个方法执行时,这些优化选项就会产生问题。如果您遵循 3.2 节中介绍的快速解决方案的步骤,通过寻找一个高级的优化选项集合进行禁用从而绕过问题来寻找一个解决方案,那么您可能早已确定了一个高级的优化选项集合。首先,您可以将 SKIP 选项修改为 NALL 选项,从而判断基本的编译是否是问题的根源,或者是否是由于优化选项而引起的问题。NALL 可以禁用大部分优化选项,但是没有禁用基本的编译。
如果您的 SKIP 选项包含了多个类规范/方法规范对,那么您就可能会希望一次对一个集合从 SKIP 切换到 NALL 上。尽管这会使得解决问题需要花费很多时间,但会给您一个目标更明确的解决方案集,在将来您请求技术支持时,使 IBM 更容易修正 JIT 的问题,在您等待修正程序的问题时,可以为每个类都提供最优的性能。
例如,如果您将失败的方法范围限定到:
1
2
SKIP{MyPackage/MyClass}{MyMethod}
{MyPackage2/MyClass2}{MyMethod2}




那么您就可以使用 SKIP 和 NALL 选项,如下所示:
1
2
export JITC_COMPILEOPT=NALL{MyPackage/MyClass}{MyMethod}:
SKIP {MyPackage2/MyClass2}{MyMethod2}




注意上面这行只是为了格式化文档的需要。在设置 JITC_COMPILEOPT 时应该没有空格和换行。
再次运行一下这个程序。如果它可以成功运行,那么您需要提炼优化选项。您可能需要遵循 3.2 中的步骤来找到一个快速解决方案,它会逐一禁用大部分高级的优化选项。这可以通过深入特定的优化层次进行深入的提炼。
如果这个程序不能运行,那么就可能存在本文中讨论的其他原因。您可以通过对所选择的方法跳过整个 JIT 编译过程来寻找一种解决方案。
现在,您可以联系 IBM 的技术服务部门了。
合并结果调试过程的最终结果应该是对一组范围很小的方法禁用一组范围很小的优化选项。在最简单的情况下,只对一个方法执行了一个有问题的优化选项。
例如,如果您在对 MyPackage/MyClass 的 myMethod 方法进行内联时确定了有问题的行,那么最终的解决方案形式如下(Korn Shell):
1
export JITC_COMPILEOPT=NINLINING{MyPackage/MyClass}{myMethod}




针对 Linux 的当前 IBM JVM 产品在撰写本文时,Linux 上的 JDK 和 JRE 可以从  下载,地址为 http://www.ibm.com/developerworks/java/jdk/linux140。                       
结束语本文简要介绍了 IBM JVM 中使用的优化技术:JIT 和 MMI。
本文中介绍的简要 JIT 诊断过程可以帮助:





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0