【问题标题】:Any examples of what JVM JIT actually does?JVM JIT 实际执行的任何示例?
【发布时间】:2019-07-17 13:03:06
【问题描述】:

groups of JIT optimisations 有一个很好的概述,提到

  • 简单的内联
  • 调用图内联
  • 尾递归消除
  • 虚拟呼叫保护优化
  • 本地数据流分析和优化
  • 注册使用优化
  • Java 习惯用法的简化
  • 代码重新排序、拆分和删除
  • 循环减少和反转
  • 循环跨步和循环不变代码运动
  • 循环展开和剥离
  • 循环版本控制和专业化
  • 异常导向优化
  • 开关分析
  • 全球数据流分析和优化
  • 部分冗余消除
  • 逃逸分析
  • GC 和内存分配优化
  • 同步优化

1) 每种情况都有简单的例子吗?这里每个答案的一个例子会很棒。但也欢迎仅链接到会谈/幻灯片/文章。

2) 除了logging via PrintAssembly 以“之前/之后”的形式显示之外,如何可视化 JIT 更改?

【问题讨论】:

  • 这些都是标准的编译器优化。尝试一本书,例如绿龙书。太宽泛了。
  • 例如一篇很好的详细文章,展示了如何消除超出范围的数组访问 darksi.de/d.sea-of-nodes

标签: java jvm jit


【解决方案1】:

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

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

2) 有一个工具叫做 Ideal Graph Visualizer。它依赖于 -XX:PrintIdealGraphLevel 选项,该选项在 HotSpot 的调试版本中可用。 More info »

【讨论】:

  • 感谢您的链接。第 35 位 Vladimir 的幻灯片包含一个非常令人印象深刻的已命名优化注册列表!幻灯片 79-89 正是我想要的!我也想知道有多少人只是盲目地希望“jit 会处理它”,又有多少人知道实际发生了什么;并想从第一组迁移到第二组:) 感觉仅仅阅读 jvm 部分是不够的。
猜你喜欢
  • 1970-01-01
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 2017-01-22
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多