虚拟机的优化技术

  • 来源:
  • 更新日期:2018-05-21

摘要:虚拟机使用了很多种优化技术这里只简单介绍其中的几种完整的优化技术介绍可以参考官网内容。在 javac 进行代码编译的时候通常也会进行优化但静态的优化有其局限性;即时编译的优化能真正考虑到代码的执行情况优化效果更好。

 虚拟机使用了很多种优化技术这里只简单介绍其中的几种完整的优化技术介绍可以参考官网内容。在 javac 进行代码编译的时候通常也会进行优化但静态的优化有其局限性;即时编译的优化能真正考虑到代码的执行情况优化效果更好。

在 Java 虚拟机规范中并未要求虚拟机必须实现即时编译但即时编译在主流的虚拟机中都有实现。
1be11f59-db97-40aa-8adc-39eadf6c6de4.jpg
公共子表达式消除
如果一个表达式已经进行过计算并且在下次用到之前依赖的变量没有变化,即表达式的计算结果不会发生变化则在下次使用这个表达式时直接使用计算的结果。
数组边界检查消除
在 Java 中访问数组时会自动进行边界检查来防止数组下标越界。但是对于某些情况并不需要每次访问都去检查如在一个循环中遍历数组元素,如果虚拟机能够确定下标不会发生越界并且优化确实能够提高运行速度则虚拟机会去除每次访问的下标检查。
方法内联
对于可以内联的方法直接复制到调用者代码中减少方法调用次数和性能消耗。
逃逸分析
方法中定义的一个对象如果会被其他方法访问则称为方法逃逸如果会被其他线程访问则称为线程逃逸。对于不能逃逸的对象,HotSpot 虚拟机采用了栈上分配、同步消除、标量替换等方法进行优化。
以上就是小编对于虚拟机的优化技术的介绍了,感兴趣的可以在下方留言发表意见。