【JVM】 TLAB到底是干什么的
1、为什么出现TLAB(Thread Local Allocation Buffer )
- 堆区是线程共享区域,任何线程都可以访问到堆区中的共享数据
- 由于对象实例的创建在JVM中非常频繁,因此在并发环境下从堆区中划分内
存空间是线程不安全的 - 为避免多个线程操作同一地址,需要使用加锁等机制,进而影响分配速度。
所以TLAB产生
2、什么是TLAB ?
- 从内存模型而不是垃圾收集的角度,对Eden区域继续进行划分,JVM为每个线程分配了一个私有缓存区域,它包含在Eden空间内。
- 多线程同时分配内存时,使用TLAB可以避免一系列的非线程安全问题,同时还能够提升内存分配的吞吐量,因此我们可以将这种内存分配方式称之为快速分配策略。
如上图,每个线程对应一个TLAB,线程私有,避免了线程安全问题,当这段空间用完了,然后再用公有的空间。
3、TLAB在说明
- 尽管不是所有的对象实例都能够在TLAB中成功分配内存,但JVM确实是TLAB作为内存分配的首选。
- 在程序中,开发人员可以通过选项“-XX:UseTLAB”设置是否开启TLAB空间。
- 默认情况下,TLAB空间的内存非常小,仅占有整个Eden空间的1%,当然我们可以通过选项“-XX:TLABWasteTargetPercent”设置TLAB空间所占用Eden空间的百分比大小。
- 一旦对象在TLAB空间分配内存失败时,JVM就会尝试着通过使用加锁机制确保数据操作的原子性,从而直接在Eden空间中分配内存。
默认是开启的
现在new一个对象,然后TLAB分配,如果TLAB空间够用,那么就对象实例化,如果不够用就只能用Eden公共的部分,如果还不够用,那么就触发GC
【JVM】 TLAB到底是干什么的相关推荐
- python可以干嘛知乎-Python到底可以干什么?老男孩Python视频教程
如果说挑选一门编程语言进行学习,你会选择哪个?当然是Python.Python是一门简单的编程语言,适合初学者学习,也是很多人都喜欢的语言,那么Python到底可以干什么?跟着老男孩教育来看看吧. P ...
- python主要是干什么用的-Python到底可以干什么?主要应用领域
如果说挑选一门编程语言进行学习,你会选择哪个?当然是Python.Python是一门简单的编程语言,适合初学者学习,也是很多人都喜欢的语言,那么Python到底可以干什么? Python语言在学术上是 ...
- python到底能干啥-Python到底可以干什么?主要应用领域
如果说挑选一门编程语言进行学习,你会选择哪个?当然是Python.Python是一门简单的编程语言,适合初学者学习,也是很多人都喜欢的语言,那么Python到底可以干什么? Python语言在学术上是 ...
- python到底是啥_Python语言中的__init__到底是干什么的?
本文主要向大家介绍了Python语言中的__init__到底是干什么的?通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 看到Python中有个函数名比较奇特,__init__我知道 ...
- 从TP-Link到雷蛇,纷纷入局智能手机业到底想干什么?
"眼看他起朱楼,眼看他宴宾客,眼看他楼塌了",这句形容世态炎凉的话其实与智能手机市场更为相像.诺基亚的辉煌与没落.黑莓的强势与消声无迹.摩托罗拉的数次易手.小米的横空出世与崛起.苹 ...
- 来客码到底是干什么的?
重庆码码电子技术开发有限公司,是一家互联网科技技术开发公司,成立于2014年,注册资金1000万,位于重庆直辖市渝北区动力国际. 公司主要从事专业营销软件开发,扫码支付.公众号二次开发.企业商业模式设 ...
- 全网最硬核 JVM TLAB 分析 6. TLAB 相关热门QA汇总
今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...
- 全网最硬核 JVM TLAB 分析(额外加菜) 8. 通过 JFR 监控 TLAB
今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...
- 全网最硬核 JVM TLAB 分析(单篇版不包含额外加菜)
今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...
最新文章
- 有向图——强连通分量
- 如何更有效WEB应用防火墙确保信息安全
- 学完Web前端后发展方向有哪些呢?
- solr 自定义 dismax查询方式
- ABBYY FineReader 12可以内置自动化任务吗
- nao机器人拆解_一些机器人硬件网站
- ASP.NET GridView控件在列上格式化时间
- c++中std::find_std :: find()与C ++中的示例
- 【python教程入门学习】两道关于递归的练习题
- 把结构用二进制方式写入文件,并读出来[转]
- [原创]FineUI秘密花园(二十六) — 选项卡控件概述
- 开启windows远程共享
- Flash网页游戏开发
- 第五章:项目范围管理 - (5.4 创建 WBS )
- 关于写论文的一些想法——如何写好一篇论文
- FPGA零基础学习:数字电路中的组合逻辑
- 在墨刀中使用思维导图
- word会把字符串中的空格自动换成不换行空格(NBSP)
- H5拍照、选择图片上传组件核心
- centos oracle libaio哪下载,在CentOS4.5上安装Oracle10g出现的libaio-0.3.96; found Not found问题求救...