相关系统
定义
当一个对象在方法里面被定义后,它可能让外部方法所引用,作为调用参数传递到其它的方法中,这种称为方法逃逸;还有可能被外部线程访问到,赋值给可以在其它线程中访问的实例数量,这种称为线程逃逸;从不逃逸、方法逃逸到线程逃逸,称为对象由低到高的不同逃逸程度。

左侧的代码,d对象不会让外部引用,只会用在方法中使用,所以不会发生逃逸。而右侧的代码中,d对象一看就有其它方法使用了,就会产生逃逸。JDK8中默认开启了逃逸分析,可以添加参数-XX:-DoEscapeAnalysis主动关闭逃逸分析。
优化措施
如果能分析出一个对象会不会逃逸到方法或线程之外,那么JIT就可能为这个对象实例采取后一系列的优化措施。
标量替换
第一个优化措施是标量替换(Scalar Replacement)

本文深入探讨JVM的逃逸分析技术,包括定义、优化措施如标量替换、栈上分配和标题替换+栈上分配,以及它们对性能的影响。逃逸分析用于判断对象是否会逃逸出方法或线程,以实现栈上分配、减少内存压力,提高程序运行效率。关闭逃逸分析或标量替换会导致性能下降。
最低0.47元/天 解锁文章
1278





