当前位置:网站首页>标量替换、栈上分配、同步消除
标量替换、栈上分配、同步消除
2022-08-02 13:48:00 【邱可爱】
逃逸分析
含义
逃逸分析是目前Java虚拟机中比较前沿的优化技术,它并不是直接优化代码的手段,而是为其他优化措施(标量替换、栈上分配、同步消除)提供依据的分析技术。
基本原理
分析对象的作用域,是否会被外部方法或者其他线程引用。
标量替换
含义
标量是指不可再分的原始数据类型(int、long等数值类型及reference类型等)。如同数据库中所说的数据的原子性。
聚和量是指可以再分的数据(对象)。
基本原理
当经过逃逸分析后,发现某个对象不会在方法之外使用,且能够拆成多个标量,那么程序执行时,不会创建该对象,而是创建多个需要的成员变量。
栈上分配
含义
如果一个对象没有发生逃逸,那这个对象会被标量替换,这个对象的成员信息会被分配到线程栈,而不会在堆上分配,这样对象会随着栈帧的销毁而销毁,从而减少GC的压力,节约空间,提升性能。
同步消除
含义
线程同步本身是一个相对耗时的过程,如果逃逸分析能够确定一个变量不会逃逸出线程,无法被其他线程访问,那么这个变量的读写肯定就不会有竞争,对这个变量实施的同步措施也就可以安全地消除掉(去掉synchronized)。
边栏推荐
- 为什么四个字节的float表示的范围比八个字节的long要广
- 微信小程序如何实现支付功能?看官方文档头疼(使用云函数的方式操作)「建议收藏」
- [b01lers2020]Welcome to Earth-1
- GTK:Gdk-CRITICAL **: IA__gdk_draw_pixbuf: assertion ‘GDK_IS_DRAWABLE (drawable)‘ failed
- js array recursively use
- Image retrieval method based on deep learning!
- stack && queue
- 存储过程详解
- Seata Distributed Transaction
- 方正璞华“劳动人事法律自助咨询服务平台”在武汉武昌区投入使用!
猜你喜欢
[C language] Analysis of function recursion (1)
面试SQL语句,学会这些就够了!!!
Seata Distributed Transaction
栈 && 队列
【C语言】剖析函数递归(1)
玉溪卷烟厂通过正确选择时序数据库 轻松应对超万亿行数据
CVE-2020-27986 (Sonarqube sensitive information leak) vulnerability fix
This binding to detailed answers
Get out of the machine learning world forever!
【C语言】手撕循环结构 —— for语句
随机推荐
80篇国产数据库实操文档汇总(含TiDB、达梦、openGauss等)
eclipse连接数据库后插入数据报错null
Redis all
社区收藏缓存设计重构实战
RestTemplate use: set request header, request body
【ONE·Data || 排序入门】
Fabric.js 动态设置字号大小
js array recursively use
WPF效果第一百九十三篇之登录实现
Image retrieval method based on deep learning!
Mysql 基本操作指南之mysql查询语句
鲁大师7月新机性能/流畅榜:性能跑分突破123万!
二叉树的类型、构建、遍历、操作
CVE-2020-27986(Sonarqube敏感信息泄漏) 漏洞修复
拯救流浪猫 | 「喵先锋」系列数字版权盲盒明日开抢
Automatically generate code generator recommendation-code-gen
【C语言】剖析函数递归(2)
矩阵中的路径
els 长条方块变形条件、边界碰撞判定
SQL函数 USER