JIT及时编译几种常见的技术
技术 | 说明 |
方法内联 |
1.出去方法调用的成本(建立栈帧、出入栈等) 2.是其他优化措施的前提 |
公共子表达式消除 | 避免相同表达式的重复计算 |
数组边界检查消除 | 去除数组访问是否越界的判断 |
逃逸分析 |
不是直接的优化手段,而是其他优化手段提供依据的分析技术; 如果确定一个对象不会逃逸到方法和线程之外,可以对对象进行如下高效的优化: 栈上分配、同步消除、标量替换 |
栈上分配 |
在栈上分配对象; 对象随着方法结束自动消失,节约gc时间; |
同步消除 | 不会逃逸,则没有线程安全问题,则不需要同步 |
标量替换 |
标量的定义:指一个数据无法在分解为更小的数据来表示;如java中的原始类型。与标量 对应的是聚合量,例如对象 标量替换:把对象拆散,根据程序访问情况,将其使用到的成员变量恢复原始类型来访问(这些成员属性在栈上创建) |