安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

面试官JVM的栈上分配TLABPLAB有啥区别?

6月22日 飞仙轩投稿
  大家好,我是树哥。
  我们在学习G1回收器的时候,一般我们都会接触到TLAB和PLAB这两个术语。它们都是为了提高内存分配效率而存在的,但它们和栈上分配有什么区别呢?今天,就让树哥带着大家盘一盘。
  栈上分配
  稍微了解过Java虚拟机内存结构的同学都知道,在Java虚拟机中有两个关键的存储数据节点,那就是:堆与栈。
  其中堆是所有线程共享的一块内存,几乎所有对象的分配都在这块内存中。而栈则是线程自己私有的,只存储线程自己的局部变量等信息。每个线程都有自己的栈,栈信息无法在线程之间共享。
  一般情况下,每个线程如果有新建的对象,那么会跟JVM申请在堆上创建对应的对象,而线程的栈则存储了指向堆对象的指针。每当一个线程想创建一个对象时,首先会请求JVM,之后JVM进行协调,创建完成之后再告诉线程,线程最后将引用放到栈中。
  在对象创建的这个过程,堆和栈之间的关系就像是列车的中央调度室和火车的关系。每次线程需要分配内存空间,都需要去到堆去申请空间,会耗费不少时间和精力。
  这个时候有人就发现,线程的有些对象其实别人也不会访问到,放在堆中貌似也没什么大作用。于是他提出:对于这些其他线程不会访问的对象,我们能不能让线程自己分配在它自己的栈空间上?这样不就可以节省不少交互时间了么!
  这个方法确实不错,如果能实现应该可以提高对象创建的时间,提高虚拟机的运行效率。
  但问题是:我怎么知道哪些对象可以分配在栈上,哪些不行呢?
  其实聪明的软件工程师们早就解决了这个问题了,他们新造了一个名字:逃逸分析。
  那么什么是逃逸分析呢?
  从字面意思上来讲,逃逸分析的目的是判断对象的作用域是否有可能逃出函数体。例如下面的代码就显示了一个逃逸的对象:privatestaticUprivatestaticvoidhello(){unewUser();u。namejava。top。u。websitehttp:www。shuyi。}
  对象实例user是类的成员变量,可以被任何线程访问,因此它属于逃逸对象。但如果我们将代码稍微改动一下,该对象就可以线程非逃逸的了。privatestaticvoidhello(){UserunewUser();u。namejava。top。u。websitehttp:www。shuyi。}
  可以看到user实例作用域只在hello函数中,不会被其他线程访问到,也不会访问。所以该user实例对象的作用域只在该函数中,因此它并未发生逃逸。对于这样的情况,虚拟机就有可能将其分配在栈上,而不在堆上。
  看到这里,我相信许多人都应该明白了什么是栈上分配了。简单点说,就是将本来应该分配在堆中的对象,让其分配在线程私有的栈上。通过这种方式,减少垃圾回收的压力,提高虚拟机的运行效率。TLAB
  TLAB(ThreadLocalAllocationBuffer),即线程本地分配缓存。这是一块线程专用的内存分配区域,TLAB占用的是eden区的空间。在TLAB启用的情况下(默认开启),JVM会为每一个线程分配一块TLAB区域。
  那么问什么需要TLAB呢?这是为了加速对象的分配!
  由于对象一般分配在堆上,而堆事线程共用的,因此可能会有多个线程在堆上申请空间,而每一次的对象分配都必须线程同步,这样会降低内存分配的效率。
  考虑到对象分配是非常常见的操作,于是JVM使用TLAB这样的线程转悠区域来避免多线程冲突,提高对象分配效率。
  为了不至于导致Eden区被填充满,因此TLAB空间一般不会太大。因此大对象有可能无法在TLAB分配,只能直接分配到堆上。这其实是一种折中的设计哲学,因为大多数分配的对象都比较小,因此TLAB空间能满足大多数的需求。PLAB
  PLAB(PromotionLocalAllocationBuffers),即晋升本地分配缓存。PLAB的作用于TLAB类似,都是为了加速对象分配效率,避免多线程竞争而诞生的。只不过PLAB是应用于对象晋升到Survivor区或老年代。与TLAB类似,每个线程都有独立的PLAB区。对象内存分配流程
  对于栈上分配与TLAB而言,其是有一定关系的。在进行对象内存分配的时候,首先会尝试进行栈上分配,接着尝试进行TLAB分配,接着判断是否可以直接进入老年代,最后不行的话再在eden区分配,如下图所示。
  图片来自网络总结
  了解完栈上分配、TLAB、PLAB之后,我们基本上可以清晰地回答如下问题。
  什么是栈上分配,它解决什么问题?
  栈上分配指的是对象直接在线程栈帧中进行分配,而不在堆中分配。它主要是为了解决多线程对象分配的低效问题,通过在栈上分配内存,避免了多线程之间的冲突,提高了对象的分配效率。但要注意的是,其只能分配较小对象,并且该对象必须不被其他对象线程引用。
  什么是TLAB,它解决什么问题?
  TLAB指的是线程本地分配缓存,其对应Eden区的某个区域,但这块区域只可以被该线程使用。
  栈上分配和TLAB有啥区别?
  TLAB可以理解成是栈上分配的升级版本。栈上分配的对象只能被线程本身访问,但TLAB的对象可以被其他对象读取,但应该无法操作。通过TLAB,它解决了部分需要多线程访问的对象分配效率问题,进一步提升了JVM的对象分配效率。
  什么是PLAB,它解决了什么问题?
  PLAB是为了在对象晋升到Survivor区或老年代的时候,提升对象的分配效率。其优化思路与TLAB类似,只是应用的地方不同。原文:https:mp。weixin。qq。comsK040nLk4ZGaEZ31ONvejA
  作者:陈树义
  如果感觉本文对你有帮助,点赞关注支持一下
投诉 评论 转载

爱过舒淇娶过乐基儿,离婚后娶小19岁助理,黎明到底在追求什么2015年,29岁的舒淇提出结婚,就在两人喜庆筹备婚礼之际。黎妈妈一句:我不会让这个女人进门。让黎明从老宅飞奔回别墅,找到舒淇后紧握她的双肩,抱歉道:我努力了,但还是不行……面试官JVM的栈上分配TLABPLAB有啥区别?大家好,我是树哥。我们在学习G1回收器的时候,一般我们都会接触到TLAB和PLAB这两个术语。它们都是为了提高内存分配效率而存在的,但它们和栈上分配有什么区别呢?今天,就……微胖女人穿衣还得看孟晚舟,50岁了身材珠圆玉润,却美得高级贵在如今以瘦为美的时代,人们似乎对那些身材微胖的女人并不友好,各种不好听的标签贴其身上,畸形审美真是灾难!对于中年女人来说,到了年纪发福、长胖在所难免,难道她们就没有追求时……17月电信业务收入总量同比分别增长8。3和22。2来源:工信微报2022年17月份通信业经济运行情况17月份,通信业保持良好运行态势。电信业务收入稳步增长,电信业务总量保持较快增长;5G、千兆光网和物联网等新型基础……桔子树学员登上CCTV15音乐频道倾情演唱同一首歌近日,来自北京桔子树艺术教育的两位小歌手赵健雅与李嘉,经过层层选拔入选中央电视台CCTV15音乐频道《一起音乐吧》开场合唱歌曲《同一首歌》阵容,两人分别担任领唱与合唱。两位小歌……药食同源,滋补上品龙眼肉(桂圆)龙眼肉,又称桂圆肉,因其种子圆黑光泽,种脐突起是白色,看似传说中龙的眼睛,所以得名。《神农本草经》记载:龙眼,味甘平。主治五脏邪气,安志厌食。久服,强魂聪明,轻身不老,通……截至2022年9月,这3款手机是拍照手机的天花板,配置足以替马上就要开学了,不少小伙伴们肯定想入手新机,但如果想让它有替代单反?那必须一步到位,这三款影像天花板非常给力,转转还有折扣,热爱摄影的小伙伴不要错过。iPhone13Pro……电池大王钟馨稼豪捐美国1000万,称中国穷跟他无关,现已破产二十世纪九十年代,下海经商的洪流使得一部分敢想敢干的人走上了财富之路,这些人成为我国改革开放之后最早富起来的一批人。那个时代,有很多怀揣着梦想的年轻人,凭借着自己的一腔热……幻都夜巡巴可走进安徒生乐园射阳安徒生童话乐园坐落在江苏省盐城市,于2019年11月开园。作为国内第二家以安徒生命名的乐园项目,它以童话为载体,让游客置身于郁郁葱葱的花园中,一步步收获童真和快乐。景……又一位75大巨星亲口承认,下赛季归属二选一,选择情谊还是荣誉NBA季后赛激战正酣,但洛杉矶双雄都已经早早结束本赛季的征程,随着本赛季篮网被绿军横扫出局,开赛季最被看好的三支球队已经全部淘汰,终于湖人可以开着快船拿着篮网开心的去捕鱼了,看……主持人年收入过亿,还把父亲送到养老院?黄渤回答我无能为力一次,主持人问黄渤:你年收入过亿,都上了福布斯名人榜,为什么还要把老年痴呆的父亲,送到养老院呢?你真的养不起吗?黄渤斩钉截铁地回答:我无能为力!1974年,黄渤在青……10年来全国新设四新经济企业2545。4万户经济日报北京10月12日讯(记者佘颖)市场监管总局12日公布的数据显示,党的十八大以来,全国新设数字经济核心产业企业643万户。从发展趋势看,新设数字经济企业发展迅速,占比由2……
秋季买家电超值,美的海尔价格大跳水,空调水箱单件减免1000骁龙8Gen1Plus你好!骁龙888Plus旗舰该说再见了鲁梅尼格莱万去巴萨是双赢的选择,纳帅要专注自己的工作转转买的99新手机竟是翻新机?消费者平台可能赌我发现不了从亚人类文化看人类的技术进步观天下美沙关系沙特响亮说不拜登警告后果聆星回响温情介绍用心倾听隐藏在古物中的温情与感动EA曾开发一款带剧情的植物大战僵尸游戏最后的生还者HBO剧集制作人这是有史以来最伟大的游戏故事李春江展铁血手腕,裁掉211cm高射炮,马布里也不要,辽宁呢人生不售回程票,学会放手,面向未来宝宝辅食3款巨好喝的营养汤教程

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利