线程本地分配缓冲区

最近,我一直在研究遭受严重性能问题的Java应用程序。 在许多问题中,真正引起我注意的一个问题是新对象的分配速率相对较低(应用程序分配了大量的相当大的对象)。 后来发现,原因是在TLAB之外发生了大量分配。

什么是TLAB?

在Java中,新对象在Eden中分配。 这是线程之间共享的内存空间。 如果考虑到多个线程可以同时分配新对象,那么显然需要某种同步机制。 怎么解决呢? 分配队列? 某种互斥锁? 即使这些是不错的解决方案,也有更好的解决方案。 这就是TLAB发挥作用的地方。 TLAB代表线程本地分配缓冲区,它是Eden内部的一个专为线程分配的区域。 换句话说,只有一个线程可以在该区域分配新对象。 每个线程都有自己的TLAB。 因此,只要在TLAB中分配对象,就不需要任何类型的同步。 在TLAB内部进行分配很简单
指针缓冲 (这就是为什么有时将其称为指针缓冲分配)
–因此将使用下一个空闲内存地址。

TLAB变得满满的

可以想象,TLAB不是无限的,在某些时候它开始变满。 如果线程需要分配一个不适合当前TLAB的新对象(因为它几乎已满),则会发生两件事:

  • 线程获取新的TLAB
  • 该对象在TLAB之外分配

JVM根据几个参数决定将要发生的情况。 如果选择了第一个选项,则线程的当前TLAB将“退休”,并且分配将在新的TLAB中完成。 在第二种情况下,分配是在Eden的共享区域中完成的,这就是为什么需要某种同步的原因。 通常,同步是有代价的。

物体太大

默认情况下,将针对每个线程分别动态调整TLAB的大小。 根据Eden的大小,线程数及其分配率重新计算TLAB的大小。 更改它们可能会影响TLAB的规模-但是,由于分配率通常会有所不同,因此没有简单的公式可以解决。 当线程需要分配一个永远无法放入TLAB的大对象(例如,大数组)时,它将在Eden的共享区域中分配,这又意味着同步。 这正是我的应用程序中正在发生的事情。 由于某些对象太大,因此它们从未在TLAB中分配。

在TLAB之外分配一些对象不一定是一件坏事–这是在次要GC之前发生的典型情况。 问题是,与TLAB内部相比,TLAB外部存在大量分配。 在这种情况下,有两个可用选项:

  • 使物体变小
  • 尝试调整TLAB尺寸

就我而言,手动调整TLAB大小不是最佳选择。 众所周知,只有少数对象类型在TLAB之外分配。 通常,修复代码是最好的选择。 在我将对象显着减小之后,它们已装入TLAB,并且TLAB内部分配给TLAB外部分配的比率恢复正常。

翻译自: https://www.javacodegeeks.com/2019/03/thread-local-allocation-buffers.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java发邮件无主题,使用SpringCloud过程中遇到的一些问题

对SpringCloud做一次简单的问题总结。application.yml 和 bootstrap.yml 有何区别?I have just asked the Spring Cloud guys and thought I should share the info I have here.bootstrap.yml is loaded before application.yml.It is typically used for the foll…

【渝粤教育】国家开放大学2019年春季 1018国际公法 参考试题

试卷代号:1018 2019年春季学期期末统一考试 国际公法试题 2019年7月 一、单项选择题(每题1分,共10分。每题只有一项答案正确,请将正确答案的序号填在括号内) 1.下列哪位法学家最早将西方国际法著作翻译成中文&#xff…

一号信令是什么?1号信令和7号信令的区别介绍!

1号信令又称为多频互控信令或随路信令。那么,什么是一号信令?一号信令是怎么分类的?1号信令常见问题有哪些?1号信令和7号信令之间有哪些区别呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 一、1号…

【渝粤教育】国家开放大学2019年春季 1124流行病学 参考试题

试卷代号:1124 2019年春季学期期末统一考试 流行病学试题(开卷) 2019年7月 一、单项选择题(每题2分,共20分) 1.下列哪一个不是流行病学的特征() A.群体特征B.以分布为起点的特征 C&a…

matlab lstm工具箱,深度学习工具箱使用笔记---lstm网络(1)

matlab 深度学习工具箱使用笔记—lstm网络在2017的版本之后,matlab上线了自己的lstm网络工具箱,至此,搭建简单的网络时,就可以只用工具包所提供的函数,并且matlab提供了GUI和训练过程界面,可以方便的使用&a…

RS232、RS485和CAN协议总结与对比

RS232简单实用,缺陷是不支持多设备间的互连,缺少拓扑结构。由此诞生了RS485。RS485最重要的是采用两条差分线代替RS232的单线传输,支持拓扑结构。RS485属于电气层的协议,物理上的实现大都在RS232基础上完成。缺陷是主从轮询的方式…

【渝粤教育】国家开放大学2019年春季 1260软件工程 参考试题

试卷代号:1260 软件工程 试题(半开卷) 2019年7月 一、选择题,请从四个可选项中选择正确答案。(60分,每题3分) 1.以下哪一项不是软件危机的表现形式( )。 A.成本高 B.生产…

【渝粤教育】国家开放大学2019年春季 1362应用语言学 参考试题

试卷代号:1362 应用语言学 试题 2019年7月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏 内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带 出考场。 二、仔细阅读题目的说明,并…

maven的中央存储库_部署到Maven中央存储库

maven的中央存储库您需要使您的Java库可公开访问吗? 您的项目托管在GitHub上吗? 您是否喜欢“将所有功能都部署到Maven Central Repository”按钮的想法? 我将展示如何使用maven-release-plugin进行设置 。 源代码托管在GitHub上,…

php 回到顶部,jquery如何实现点击网页回到顶部效果?(图文+视频)

本篇文章主要给大家介绍如何用jquery代码实现网页回到顶部的效果。我们在浏览各大网站页面时,想必大家肯定都遇到过,当阅览一个长页面时,拉到下面部分会出现类似回到顶部的按钮特效吧。这种点击回到顶部的功能特效,可以很大程度上…

【渝粤教育】国家开放大学2019年春季 2114人体解剖生理学 参考试题

试卷代号:2114 人体解剖生理学 试题 2019年7月 一、单项选择题(每题2分,共80分) 1.上皮组织的特点不包括( )。 A.包括被覆上皮和腺上皮 B.分布于体表及有腔器官的腔面 C.含丰富血管、神经 D.具有保护作用 E…

rs485中继器产品功能特点及应用领域介绍

中继器是连接网络线路的一种装置,常用于两个网络节点之间物理信号的双向转发工作。rs485/422中继器是最简单的网络互联设备,主要完成物理层的功能,负责在两个节点的物理层上按位传递信息,完成信号的复制、调整和放大功能&#xff…

【渝粤教育】国家开放大学2019年春季 2441经济数学基础1 参考试题

试卷代号:2441 2 0 1 9年春季学期期末统一考试 经济数学基础1 试题 2019年7月 导数基本公式: 积分基本公式: ( 一、单项选择题(每小题4分,本题共20分) 1.下列函数中为奇函数的是( )&#xff0…

使用JDK 13查看TLS配置

JDK 13 Early Access Build 16现在可用,它带来的有趣的功能之一是能够使keytool命令行工具显示当前系统的TLS配置信息 。 这比尝试在单独的文档中查找受支持的TLS信息并使该信息与自己的JDK供应商和版本更容易。 要查看JDK 13 Early Access Build 16的TLS配置详细信…

php只显示一部分文章,typecho同一个页面下调用不同分类的文章但是却只显示一个分类文章...

typecho同一个页面下调用不同分类的文章但是却只显示一个分类文章作者:佚名来源:爱好者时间:2018-04-30问题描述:同页面调用分类下文章,只显示一第一个分类下的文章在一个页面中,反复调用下面这段代码&…

串口服务器常见异常情况排除方法介绍

串口服务器就像一台带CPU、实时操作系统和TCP/IP协议的微型电脑,方便在串口和网络设备中传输数据。在使用串口服务器的过程中,一般按照操作手册进行操作基本上可以解决问题,但是,在实际操作中还是会出现一些异常故障,今…

【渝粤教育】国家开放大学2019年春季 2712园艺基础 参考试题

试卷代号:2712 园艺基础 试题 2019年7月 一、单项选择题(每题3分,共30分) 1.由种子萌发后胚根向下生长形成的根是( )。 A.块根 B.侧根 C.主根 D.不定根 2.补光…

【渝粤教育】国家开放大学2019年春季 3717天然气管道长输技术 参考试题

科目编号:3717 座位号 2018-2019学年度第二学期期末考试 天然气管道长输技术 试题 2019年 5 月 一、填空题(本大题共5空,每空5分,共计25分) 1.流体在管道中的流态划分为两大类:和。 2&#xff…

ckfinder php 配置,php – 在Laravel 5中为CKEditor设置路径以使用CKFinder

您好我正在尝试将CKFinder与CKEditor集成到一个laravel项目中.我在CKEditor的config.js文件中进行了以下设置:CKEDITOR.editorConfig function( config ) {// Define changes to default configuration here. For example:// config.language fr;config.uiColor …

工业级光模块是什么?

可能很多人都不知道,光模块是所有网络连接部署中不可或缺的组成部分。一个产品的出现往往与市场需求相对应,我们平时所接触到的光模块大部分只能满足商业数据中心的网络部署,那么大型工业的网络部署该如何满足实现呢?在这种情况下&#xff0…