pal*_*int 1 java jvm escape-analysis
当我运行它时,此示例工作正常(打印为true)-XX:+DoEscapeAnalysis -server:
final Object lock = new Object();
synchronized (lock) {
System.out.println(Thread.holdsLock(lock)); // prints true
}
Run Code Online (Sandbox Code Playgroud)
另一方面,简短且不太详细的Java HotSpot™虚拟机性能增强文档说明如下:
服务器编译器还消除了所有非全局转义对象的锁.
因此,如果转义分析在这里消除了不必要的同步,它应该打印false.
我想逃避分析处理holdsLock得当(消除锁没有破坏holdsLock())但我想看一些官方参考或可能相关的JVM源代码片段.