栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于逃逸分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于逃逸分析

什么时候逃逸技术

逃逸分析技术是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!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/736342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号