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到底是干什么的相关推荐

  1. python可以干嘛知乎-Python到底可以干什么?老男孩Python视频教程

    如果说挑选一门编程语言进行学习,你会选择哪个?当然是Python.Python是一门简单的编程语言,适合初学者学习,也是很多人都喜欢的语言,那么Python到底可以干什么?跟着老男孩教育来看看吧. P ...

  2. python主要是干什么用的-Python到底可以干什么?主要应用领域

    如果说挑选一门编程语言进行学习,你会选择哪个?当然是Python.Python是一门简单的编程语言,适合初学者学习,也是很多人都喜欢的语言,那么Python到底可以干什么? Python语言在学术上是 ...

  3. python到底能干啥-Python到底可以干什么?主要应用领域

    如果说挑选一门编程语言进行学习,你会选择哪个?当然是Python.Python是一门简单的编程语言,适合初学者学习,也是很多人都喜欢的语言,那么Python到底可以干什么? Python语言在学术上是 ...

  4. python到底是啥_Python语言中的__init__到底是干什么的?

    本文主要向大家介绍了Python语言中的__init__到底是干什么的?通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 看到Python中有个函数名比较奇特,__init__我知道 ...

  5. 从TP-Link到雷蛇,纷纷入局智能手机业到底想干什么?

    "眼看他起朱楼,眼看他宴宾客,眼看他楼塌了",这句形容世态炎凉的话其实与智能手机市场更为相像.诺基亚的辉煌与没落.黑莓的强势与消声无迹.摩托罗拉的数次易手.小米的横空出世与崛起.苹 ...

  6. 来客码到底是干什么的?

    重庆码码电子技术开发有限公司,是一家互联网科技技术开发公司,成立于2014年,注册资金1000万,位于重庆直辖市渝北区动力国际. 公司主要从事专业营销软件开发,扫码支付.公众号二次开发.企业商业模式设 ...

  7. 全网最硬核 JVM TLAB 分析 6. TLAB 相关热门QA汇总

    今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...

  8. 全网最硬核 JVM TLAB 分析(额外加菜) 8. 通过 JFR 监控 TLAB

    今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...

  9. 全网最硬核 JVM TLAB 分析(单篇版不包含额外加菜)

    今天,又是干货满满的一天.这是全网最硬核 JVM 系列的开篇,首先从 TLAB 开始.由于文章很长,每个人阅读习惯不同,所以特此拆成单篇版和多篇版 全网最硬核 JVM TLAB 分析(单篇版不包含额外 ...

最新文章

  1. 有向图——强连通分量
  2. 如何更有效WEB应用防火墙确保信息安全
  3. 学完Web前端后发展方向有哪些呢?
  4. solr 自定义 dismax查询方式
  5. ABBYY FineReader 12可以内置自动化任务吗
  6. nao机器人拆解_一些机器人硬件网站
  7. ASP.NET GridView控件在列上格式化时间
  8. c++中std::find_std :: find()与C ++中的示例
  9. 【python教程入门学习】两道关于递归的练习题
  10. 把结构用二进制方式写入文件,并读出来[转]
  11. [原创]FineUI秘密花园(二十六) — 选项卡控件概述
  12. 开启windows远程共享
  13. Flash网页游戏开发
  14. 第五章:项目范围管理 - (5.4 创建 WBS )
  15. 关于写论文的一些想法——如何写好一篇论文
  16. FPGA零基础学习:数字电路中的组合逻辑
  17. 在墨刀中使用思维导图
  18. word会把字符串中的空格自动换成不换行空格(NBSP)
  19. H5拍照、选择图片上传组件核心
  20. centos oracle libaio哪下载,在CentOS4.5上安装Oracle10g出现的libaio-0.3.96; found Not found问题求救...

热门文章

  1. 通俗易懂讲清502、503、504是什么
  2. ubuntu20.04安装搜狗sogou输入法
  3. matlab水果图片,matlab数字图像处理-----------------水果识别
  4. w11 php 环境变量
  5. 如何使用HTML和CSS进行分页?
  6. 对Python控制流图生成器的一些探索
  7. C 中的auto register static extern的使用
  8. 智能住宅小区安防报警网络系统
  9. 使用Python将多张图片生成视频,并添加背景音乐及字幕
  10. 分类模型常用的评价指标