欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

关于逃逸分析

时间:2023-06-14
什么时候逃逸技术

逃逸分析技术是jvm用于提高性能以及节省内存的手段,在jvm编译语境下,逃逸分析通过以下两个条件判断该对象是否是逃逸的:

该对象是否分配在堆上(static关键字或者成员变量)该对象是否会传给未知代码,比如return到外部给别的类使用 逃逸技术的两个示例

如下所示,这两段代码就是典型的情况2,将对象传给未知代码,造成逃逸

public class ObjectEscape{ private User user; public void init(){ user = new User(); }}

public class ObjectReturn{ public User createUser(){ User user = new User(); return user; }}

逃逸分析的优点 对象可能分配在栈上

jvm会判断这个对象使用范围,就有一定可能性将对象分配在栈上,这样做的好处就是创建销毁速度会相对快些,而且节省堆区内存,表面gc的开销。

分离对象或标量替换

由上文我们知道,对象有可能会被分配在栈上,那么jvm就会将这个对象打散,将对象打散为无数个小的局部变量,这样就方便在栈上分配内存了

同步锁消除

如果jvm分析到这个锁只有一个对象会用到就会将这个锁消除。

参考文献

逃逸分析,yyds!!

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。