来自 https://wiki.openjdk.java.net/display/HotSpot/PerformanceTacticIndex
编译器策略 compiler tactics
- 延迟编译 delayed compilation
- 分层编译 tiered compilation
- 栈上替换 on-stack replacement
- 延迟优化 delayed reoptimization
- 程序依赖图表示 program dependence graph representation
- 静态单赋值表示 static single assignment representation
基于性能监控的优化技术 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
基于证据的优化技术 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
内存及代码位置变换 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 调整 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