当前位置:网站首页>标量替换、栈上分配、同步消除
标量替换、栈上分配、同步消除
2022-08-02 13:48:00 【邱可爱】
逃逸分析
含义
逃逸分析是目前Java虚拟机中比较前沿的优化技术,它并不是直接优化代码的手段,而是为其他优化措施(标量替换、栈上分配、同步消除)提供依据的分析技术。
基本原理
分析对象的作用域,是否会被外部方法或者其他线程引用。
标量替换
含义
标量是指不可再分的原始数据类型(int、long等数值类型及reference类型等)。如同数据库中所说的数据的原子性。
聚和量是指可以再分的数据(对象)。
基本原理
当经过逃逸分析后,发现某个对象不会在方法之外使用,且能够拆成多个标量,那么程序执行时,不会创建该对象,而是创建多个需要的成员变量。
栈上分配
含义
如果一个对象没有发生逃逸,那这个对象会被标量替换,这个对象的成员信息会被分配到线程栈,而不会在堆上分配,这样对象会随着栈帧的销毁而销毁,从而减少GC的压力,节约空间,提升性能。
同步消除
含义
线程同步本身是一个相对耗时的过程,如果逃逸分析能够确定一个变量不会逃逸出线程,无法被其他线程访问,那么这个变量的读写肯定就不会有竞争,对这个变量实施的同步措施也就可以安全地消除掉(去掉synchronized)。
边栏推荐
- Word | 关于删除分节符(下一页)前面的版式就乱了解决方案
- Introduction to Scala Basic Syntax (3) Various Operators in Scala
- Redis all
- els strip collision deformation judgment
- 国产 GPU 创业潮 喧嚣下的资本游戏
- Reading IDEO, Design Changes Everything
- “多源异构”和“异构同源”定义区分详解「建议收藏」
- CVE-2020-27986(Sonarqube敏感信息泄漏) 漏洞修复
- Seata Distributed Transaction
- LeetCode(剑指 Offer)- 53 - II. 0~n-1中缺失的数字
猜你喜欢
随机推荐
【ONE·Data || 排序入门】
数值的整数次方
高效代码静态测试工具Klocwork 2022.2——Portal全新升级、支持RLM
WeChat applet getPhoneNumber interface code=40013
基于华为eNSP的企业网络规划
First acquaintance of scrapy framework 1
【C语言】剖析函数递归(1)
Mysql视图
【C语言】剖析函数递归(2)
GTK:Gdk-CRITICAL **: IA__gdk_draw_pixbuf: assertion ‘GDK_IS_DRAWABLE (drawable)‘ failed
Kunpeng devkit & boostkit
Closures in JS
Image retrieval method based on deep learning!
为什么四个字节的float表示的范围比八个字节的long要广
Redis all
方正璞华“劳动人事法律自助咨询服务平台”在武汉武昌区投入使用!
智能指针-使用、避坑和实现
【C语言】夏日一题 —— 求最大公约数和最小公倍数
基于深度学习的图像检索方法!
Flashback Technology of Oracle Database









