JVM JIT实际做什么的任何示例?

时间:2019-07-15 17:24:28

标签: java jvm jit

关于groups of JIT optimisations的概述很好,提到了

  • 临时内联
  • 内联调用图
  • 消除尾递归
  • 虚拟呼叫保护优化
  • 本地数据流分析和优化
  • 注册使用优化
  • Java习惯用法的简化
  • 代码重新排序,拆分和删除
  • 环路减少和反演
  • 循环跨步和循环不变代码运动
  • 展开和剥皮
  • 循环版本控制和专业化
  • 针对异常的优化
  • 切换分析
  • 全局数据流分析和优化
  • 消除部分冗余
  • 逃生分析
  • GC和内存分配优化
  • 同步优化

1)是否有每种情况的简单示例?每个答案的示例在这里会很棒。但是也欢迎仅链接到讲座/幻灯片/文章。

2)除“ {before / after”之前的logging via PrintAssembly以外,如何显示JIT更改?

1 个答案:

答案 0 :(得分:5)

讨论JVM JIT优化是一个非常广泛的主题,值得一整本书。您询问的列表未列出特定的优化;相反,每个项目符号都列出了整个优化系列。用示例描述每个人都是一项巨大的工作,所以不要指望有人会在这里免费这样做。

但是,这里有一些有用的链接可以开始研究该主题:

2)有一个名为Ideal Graph Visualizer的工具。它依赖于-XX:PrintIdealGraphLevel选项,该选项在HotSpot的调试版本中可用。 Presentations about HotSpot JVM internals