当前位置: 首页 > news >正文

【jvm】什么是TLAB

目录

          • 1. 说明
          • 2. TLAB的作用
            • 2.1 提高对象分配性能
            • 2.2 减少线程竞争
            • 2.3 降低内存分配开销
          • 3. TLAB的生命周期
            • 3.1 创建与初始化
            • 3.2 使用与再填充
            • 3.3 释放与回收
          • 4. TLAB的配置与优化

1. 说明
  • 1.TLAB即Thread Local Allocation Buffer,是Java虚拟机中的一种内存区域,全称为线程本地分配缓存区。
  • 2.是JVM为每个线程分配的一个私有的、固定大小的内存区域。
  • 3.用于存储线程私有的对象实例和本地数据。
  • 4.TLAB的主要目的是提高对象分配的性能,减少线程之间的竞争,以及降低内存分配的开销。
2. TLAB的作用
2.1 提高对象分配性能
  • 1.在传统的JVM内存分配方式中,多个线程在分配对象时需要竞争同一个全局的分配锁,会导致性能瓶颈。
  • 2.TLAB则为每个线程分配一个私有的内存区域,使得线程在分配对象时不再需要竞争全局锁,而是在自己的TLAB中进行分配,提高了对象分配的效率。
2.2 减少线程竞争
  • 1.由于TLAB是线程私有的,因此多个线程在分配对象时不会互相干扰,减少了线程之间的竞争,提高了系统的并发性能。
2.3 降低内存分配开销
  • 1.使用TLAB可以减少全局分配锁的开销,因为线程在TLAB中分配对象时不需要获取全局锁。
  • 2.由于TLAB的大小是固定的,因此JVM可以更高效地管理内存,降低了内存分配的开销。
3. TLAB的生命周期
3.1 创建与初始化
  • 1.当线程被创建时,如果JVM启动了TLAB(默认是开启的),则会为该线程创建并初始化TLAB。
  • 2.在GC扫描对象后,线程第一次尝试分配对象时,也会创建并初始化TLAB。
3.2 使用与再填充
  • 1.线程在分配对象时,会优先在自己的TLAB中进行分配。
  • 2.当TLAB被用完或接近于满时,线程会尝试再填充TLAB,即从堆中申请新的内存空间来扩展TLAB。
  • 3.如果无法再填充(例如堆内存不足),则线程会竞争全局分配锁,在堆中直接分配对象。
3.3 释放与回收
  • 1.在GC扫描对象时,TLAB会释放回Eden区。
  • 2.TLAB的生命周期期望只存在于一个GC扫描周期内。
  • 3.如果TLAB中的对象在GC过程中仍然存活,它们会被复制到其他内存区域(如Survivor幸存者区或老年代),而TLAB本身则会被回收。
4. TLAB的配置与优化
  • 1.启用与禁用TLAB:可以通过JVM参数 -XX:+UseTLAB 来启用TLAB,通过 -XX:-UseTLAB 来禁用TLAB。默认情况下,JVM是启用TLAB的。
  • 2.设置TLAB大小:可以通过JVM参数 -XX:TLABSize= 来设置TLAB的初始大小(以字节为单位)。如果没有指定TLAB大小,JVM会根据堆大小、线程数量等因素动态计算TLAB的大小。
  • 3.调整TLAB相关参数:JVM还提供了其他与TLAB相关的参数,如 -XX:MinTLABSize= (设置最小TLAB大小)、
    -XX:TLABWasteTargetPercent=(设置TLAB浪费占用Eden的百分比)等,这些参数可以帮助用户进一步优化TLAB的性能。

http://www.mrgr.cn/news/59097.html

相关文章:

  • PostgreSQL用load语句加载插件
  • Three.js 使用着色器 实现跳动的心
  • Java面试题——微服务篇
  • 第九章 Mybatis多表操作之多对多配置
  • react项目因eslint检测未通过而Failed to compile编译失败
  • 17. 云计算和分布式计算
  • 李沐读论文-启发与借鉴-3:Attention is all you need
  • 【Nas】X-DOC:在Mac OS X 中使用 WOL 命令唤醒局域网内 PVE 主机
  • 四、Hadoop 命令高级用法深度剖析
  • 基于SSM框架、传统文化学习系统的设计与实现
  • Lampiao靶机入侵实战
  • springboot多模块打包时出现Could not resolve dependencies for project
  • 构建负责任的人工智能:数据伦理与隐私保护
  • 牛客周赛 Round 64(博弈论、思维、构造、LCA、换根DP)
  • 信息咨询试题
  • nfs实验
  • Redis学习文档(常见面试题)
  • 基于SSM+小程序的垃圾分类管理系统(垃圾3)
  • P450催化的联芳基偶联反应-文献精读72
  • 【专题】计算机网络之数据链路层
  • 「二叉树进阶题解:构建、遍历与结构转化全解析」
  • 【Linux系统】进程终止
  • Elasticsearch安装使用
  • Python数值计算(33)——simpson 3/8积分公式
  • 011 操作符详解 中
  • 硬件设计-PCIe时钟抖动测量