栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JIT优化序言

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JIT优化序言

  JIT是Just-In-Time的缩写,是Java虚拟机把字节码的再编译为本地代码的编译器的名称。我为什么突然想写这个呢?因为国内对JIT的研究非常少,而且面试也问得少,但是我认为JIT对虚拟机特别重要,因为对性能的提升非常明显。java虚拟机使用的是jvm指令集,而底层机器有自己的指令集,指令集的差异使得这个“翻译”过程非常耗费性能。对于这个问题,在JIT之前,java曾经有AOT(Ahead-Of-Time),这种编译器是将字节码bytecode提前编译为机器代码。AOT被淘汰的原因是统计发现80%的bytecode只执行一次,那么全部编译为机器代码,就没有必要了。对于只执行一次的代码,解释器性能更好,因为编译为本地代码开销比较大。
  我这个子专栏专讲JIT优化。主要分为以下67种优化技术,后面的星号表示面试被问概率,星号越多被问概率越大:
  编译策略compiler tactics

  • delayed compilation⭐⭐⭐⭐⭐
  • tiered compilation⭐⭐⭐⭐⭐
  • on-stack replacement⭐⭐⭐⭐⭐
  • delayed reoptimization⭐⭐
  • program dependence graph rep.⭐
  • static single assignment rep.⭐⭐⭐
      proof-based techniques
  • exact type inference⭐
  • memory value inference⭐
  • memory value tracking⭐
  • constant folding⭐
  • reassociation⭐
  • operator strength reduction⭐
  • null check elimination⭐⭐⭐⭐
  • type test strength reduction⭐
  • type test elimination⭐⭐
  • algebraic simplification⭐
  • common subexpression elimination⭐
  • integer range typing⭐
      flow-sensitive rewrites
  • conditional constant propagation⭐
  • dominating test detection⭐
  • flow-carried type narrowing⭐
  • dead code elimination⭐
      language-specific techniques
  • class hierarchy analysis⭐
  • devirtualization⭐
  • symbolic constant propagation⭐
  • autobox elimination⭐
  • escape analysis⭐⭐⭐⭐⭐
  • lock elision⭐⭐⭐⭐⭐
  • lock fusion⭐⭐⭐⭐⭐
  • de-reflection⭐
      speculative (profile-based) techniques
  • optimistic nullness assertions⭐
  • optimistic type assertions⭐
  • optimistic type strengthening⭐
  • optimistic array length strengthening⭐
  • untaken branch pruning⭐
  • optimistic N-morphic inlining⭐
  • branch frequency prediction⭐
  • call frequency prediction⭐
      memory and placement transformation
  • expression hoisting⭐
  • expression sinking⭐
  • redundant store elimination⭐
  • adjacent store fusion⭐
  • card-mark elimination⭐
  • merge-point splitting⭐
      loop transformations
  • loop unrolling⭐
  • loop peeling⭐
  • safepoint elimination⭐
  • iteration range splitting⭐
  • range check elimination⭐
  • loop vectorization⭐
      global code shaping
  • inlining (graph integration)⭐⭐
  • global code motion⭐
  • heat-based code layout⭐
  • switch balancing⭐
  • throw inlining⭐
      control flow graph transformation
  • local code scheduling⭐
  • local code bundling⭐
  • delay slot filling⭐
  • graph-coloring register allocation⭐
  • linear scan register allocation⭐
  • live range splitting⭐
  • copy coalescing⭐
  • constant splitting⭐
  • copy removal⭐
  • address mode matching⭐
  • instruction peepholing⭐
  • DFA-based code generator⭐
      总结下,面试最热门问题是:
      1. 延迟编译
      2. 分层编译
      3. 栈上替换
      4. 逃逸分析
      5. 锁消除
      6. 锁粗化
      除这六种优化外,其余61种优化,面试几乎不会问到。
  • 转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/775035.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号