【Java 虚拟机】- Java 虚拟机之逃逸分析
逃逸分析
概念
逃逸分析(Escape Analysis) 是目前
Java
虚拟机中比较前沿的优化技术, 它与类型继承关系分析一样, 并不是直接优化代码的手段, 而是为其他优化措施提供依据的分析技术开启参数:使用参数
-XX: +DoEscapeAnalysis
来手动开启逃逸分析,-XX: +PrintEscapeAnalysis
来查看分析结果
基本原理
分析对象动态作用域, 当一个对象在方法里面被定义后, 它可能被外部方法所引用
类型
方法逃逸:作为调用参数传递到其他方法中
线程逃逸:可能被外部线程访问到, 譬如赋值给可以在其他线程中访问的实例变量
对象由低到高的不同逃逸程度:从不逃逸、 方法逃逸到线程逃逸
优化手段
栈上分配(支持方法逃逸)
标量替换
同步消除
优化例子
复制代码
延伸:假如有人问,
Java
对象是否一定在堆中分配吗?答案:不是的,假如开启了逃逸分析,Java
虚拟机会进行逃逸分析,那么假如满足其条件便会出现栈上分配的情况
评论 (1 条评论)