最近看了马士兵的一个视频,他在讲解锁的过程中顺嘴提到了
锁消除与逃逸分析是两个概念
逃逸分析是指的对象分配过程中的栈上分配的时候进行逃逸分析
视频地址https://www.bilibili.com/vide...(视频前一分钟的内容),按照他的说法是不是可以认为锁消除跟逃逸分析是没有关系的?
但是我在看周志明的《深入理解Java虚拟机》第三版中关于锁消除的内容时,里面说到
锁消除的主要判定依据来源于逃逸分析的数据支持
书中关于介绍逃逸分析时提到逃逸分析可能为对象采取的优化有栈上分配、标量替换和同步消除。同步消除中提到
如果逃逸分析能够确定一个变量不会逃逸出线程,无法被其他线程访问,那么这个变量的读写肯定就不会有竞争,对这个变量实施的同步措施也就可以安全地消除掉。
那么两人谁的内容更加准确一些呢?求解答!
锁消除和栈上分配都需要用到逃逸分析