当前位置:网站首页>标量替换、栈上分配、同步消除
标量替换、栈上分配、同步消除
2022-08-02 13:48:00 【邱可爱】
逃逸分析
含义
逃逸分析是目前Java虚拟机中比较前沿的优化技术,它并不是直接优化代码的手段,而是为其他优化措施(标量替换、栈上分配、同步消除)提供依据的分析技术。
基本原理
分析对象的作用域,是否会被外部方法或者其他线程引用。
标量替换
含义
标量是指不可再分的原始数据类型(int、long等数值类型及reference类型等)。如同数据库中所说的数据的原子性。
聚和量是指可以再分的数据(对象)。
基本原理
当经过逃逸分析后,发现某个对象不会在方法之外使用,且能够拆成多个标量,那么程序执行时,不会创建该对象,而是创建多个需要的成员变量。
栈上分配
含义
如果一个对象没有发生逃逸,那这个对象会被标量替换,这个对象的成员信息会被分配到线程栈,而不会在堆上分配,这样对象会随着栈帧的销毁而销毁,从而减少GC的压力,节约空间,提升性能。
同步消除
含义
线程同步本身是一个相对耗时的过程,如果逃逸分析能够确定一个变量不会逃逸出线程,无法被其他线程访问,那么这个变量的读写肯定就不会有竞争,对这个变量实施的同步措施也就可以安全地消除掉(去掉synchronized)。
边栏推荐
猜你喜欢
随机推荐
[b01lers2020]Welcome to Earth-1
巴比特 | 元宇宙每日必读:蒂芙尼宣布推出限量版 CryptoPunk 定制吊坠
[typescript] Use the RangePicker component in antd to implement time limit the previous year (365 days) of the current time
存储过程详解
FreeBSD bnxt以太网驱动源码阅读记录三:
Fabric.js 动态设置字号大小
OpenMMLab简介
requestparam注解接的收的是什么格式(玄机赋注解)
Mysql index details (with pictures and texts)
SQL函数 $TSQL_NEWID
Cannot determine loading status from target frame detached when selenium chrome driver is running
“多源异构”和“异构同源”定义区分详解「建议收藏」
A number of embassies and consulates abroad have issued reminders about travel to China, personal and property safety
[C language] Analysis of function recursion (3)
80篇国产数据库实操文档汇总(含TiDB、达梦、openGauss等)
社区收藏缓存设计重构实战
SQL函数 UCASE
Detailed explanation of ORACLE expdp/impdp
How to create short images and short videos from the media?How to make the click volume reach 10W?
This binding to detailed answers