深入理解JVM后端优化技术-逃逸分析(Escape Analysis)

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

相关系统

深入理解jvm执行引擎-CSDN博客

深入理解JVM后端优化技术-方法内联-CSDN博客

定义

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

左侧的代码,d对象不会让外部引用,只会用在方法中使用,所以不会发生逃逸。而右侧的代码中,d对象一看就有其它方法使用了,就会产生逃逸。JDK8中默认开启了逃逸分析,可以添加参数-XX:-DoEscapeAnalysis主动关闭逃逸分析。 

优化措施

        如果能分析出一个对象会不会逃逸到方法或线程之外,那么JIT就可能为这个对象实例采取后一系列的优化措施。

标量替换

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值