JVM JIT诊断工具和优化技巧(JVM JIT diagnostic tools and opti

2019-09-01 07:30发布

我听到了很多关于什么JVM JIT们可以做,但没有看到如何分析一下JIT实际上是在做你的程序给定的运行大量的信息。 有很多关于使用技巧-XX:+PrintCompilation-XX:+PrintOptoAssembly但它导致了真的是很难解释的低级信息。

在一般情况下,在优化过程中,我喜欢有专门的JIT预热时间等常用操作的基准套件,但我希望能够看到哪些优化实际上是射击我的代码。 也许我的JVM认为内联特定的方法调用,但一些关于它使人们决定不,或者也许是JIT是无法避免数组的边界检查在我的循环,因为我措辞不变我和循环条件太含糊。 我期望像YourKit的工具来支持某种形式的“正在发生的事情与JIT”,但我一直没能找到该支持YourKit或其他地方。

理想的情况是我只是想什么样的JIT的优化我的程序的运行过程中的思维大脑转储。 说我热身我的功能很多,它决定内联三种方法进入我的内循环,并打破循环为三个部分,没有数组的边界在中间部分的检查,我想这些决定和动机的总结他们。

我失去了一些东西明显在这里吗? 什么是JVM性能感知程序员优化紧凑的内部循环弄清楚是怎么回事的时候怎么办? 当然低级-XX标志不能是唯一的选择,可他们? 我会很感激就如何最好地处理这种低层次的东西在JVM上的提示。 不,这个问题不会被过早的优化动机! :)

编辑:我想一些什么,我想由下式给出-XX:+LogCompilation但我仍然好奇,如果人们对这种活动的一般技巧和工具。

Answer 1:

如果你想有一个倾吐心事,可以打印生成的汇编代码,但是这是不是你有什么已经非常低的水平。 我怀疑你在找什么的热点JVM不存在。 我看到的是这样的基础上的JRockit,或许这将使它成为热点一天一个演示。

我失去了一些东西明显在这里吗? 什么是JVM性能感知程序员优化紧凑的内部循环弄清楚是怎么回事的时候怎么办?

通常情况下,我想尽量减少垃圾的产生,这通常执行不够好。 例如,对于微秒的延迟。

这类微优化确实需要深刻理解的机器代码,以及如何CPU的真正工作。

当然低级-XX标志不能是唯一的选择,可他们?

如果仅仅是哪里这么简单,它是更为复杂的。 要转储的机器代码,你需要不与JVM附带额外的机库。 ;)

我会很感激就如何最好地处理这种低层次的东西在JVM上的提示。

看来你真的不希望在低层次工作,如果能避免的话,我相信这是一个很好的事情,你必须首先照顾的较高水平,因为微优化有利于微基准测试,但很少良好的实际应用,因为你需要了解你的端到端系统的所有延迟,这可以看也不看在许多情况下的代码做。 即是你的数据库,操作系统,磁盘或网络IO主延迟。

我仍然好奇,如果人们对这种活动的一般技巧和工具。

使用分析器,如果你怀疑,你需要去下,它很可能你已经错过了一些重要得多。



文章来源: JVM JIT diagnostic tools and optimization tips