当前位置:网站首页>标量替换、栈上分配、同步消除
标量替换、栈上分配、同步消除
2022-08-02 13:48:00 【邱可爱】
逃逸分析
含义
逃逸分析是目前Java虚拟机中比较前沿的优化技术,它并不是直接优化代码的手段,而是为其他优化措施(标量替换、栈上分配、同步消除)提供依据的分析技术。
基本原理
分析对象的作用域,是否会被外部方法或者其他线程引用。
标量替换
含义
标量是指不可再分的原始数据类型(int、long等数值类型及reference类型等)。如同数据库中所说的数据的原子性。
聚和量是指可以再分的数据(对象)。
基本原理
当经过逃逸分析后,发现某个对象不会在方法之外使用,且能够拆成多个标量,那么程序执行时,不会创建该对象,而是创建多个需要的成员变量。
栈上分配
含义
如果一个对象没有发生逃逸,那这个对象会被标量替换,这个对象的成员信息会被分配到线程栈,而不会在堆上分配,这样对象会随着栈帧的销毁而销毁,从而减少GC的压力,节约空间,提升性能。
同步消除
含义
线程同步本身是一个相对耗时的过程,如果逃逸分析能够确定一个变量不会逃逸出线程,无法被其他线程访问,那么这个变量的读写肯定就不会有竞争,对这个变量实施的同步措施也就可以安全地消除掉(去掉synchronized)。
边栏推荐
猜你喜欢
随机推荐
拯救流浪猫 | 「喵先锋」系列数字版权盲盒明日开抢
OpenMMLab简介
你真的懂单例模式么
苹果,与Web3 “八字不合”
【C语言】细品分支结构——switch语句
80篇国产数据库实操文档汇总(含TiDB、达梦、openGauss等)
In-depth analysis and use of Ribbon load balancing
CVE-2020-27986 (Sonarqube sensitive information leak) vulnerability fix
目前想通过提取本地excel文件创建数据表,在sql语句这出了一些问题
HALCON: 对象(object)从声明(declaration)到结束(finalization)
【C语言】函数哪些事儿,你真的get到了吗?(1)
Detailed explanation of stored procedures
Introduction to Scala Basic Syntax (3) Various Operators in Scala
Seata Distributed Transaction
二分查找 && 树
Automatically generate code generator recommendation-code-gen
stack && queue
什么是 commonjs2
els strip collision deformation judgment
【C语言】明解数组(1)

![Embedded system driver primary [2] - based on character device driver _ basic framework](/img/71/4feb9e42fd2ff1bc4a2d49798657b2.png)







