JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)

学习JVM的一点简单笔记,宋红康老师jvm讲的很好,感谢。

尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)


逃逸分析:代码优化

避免垃圾回收,提高程序性能。
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第1张图片

栈上分配

JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第2张图片
在这里插入图片描述

-/+DoEscapeAnalysis 默认开启

关闭逃逸分析
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第3张图片
开启逃逸分析
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第4张图片
运行时间减少,根本不会维护那么多对象。
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第5张图片
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第6张图片
甚至没有发生gc。


同步省略

JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第7张图片
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第8张图片
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第9张图片
字节码中还是有,运行时才考虑省略。

分离对象/标量替换

JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第10张图片
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第11张图片
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第12张图片
JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第13张图片

JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第14张图片
主要还是标量替换,作为优化的手段,逃逸分析完,直接进行栈上分配并没有被采用。逃逸分析,分析后主要还是依赖标量替换。

对象标量替换后,已经不被成为对象,所以才说所有对象实例,在堆上。


JVM笔记-16运行时数据区-堆(逃逸分析:代码优化、总结)_第15张图片

你可能感兴趣的:(jvm,jvm,java)