范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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

  大家好,我是树哥。
  我们在学习 G1 回收器的时候,一般我们都会接触到 TLAB 和 PLAB 这两个术语。它们都是为了提高内存分配效率而存在的,但它们和栈上分配有什么区别呢?今天,就让树哥带着大家盘一盘。
  栈上分配
  稍微了解过 Java 虚拟机内存结构的同学都知道,在 Java 虚拟机中有两个关键的存储数据节点,那就是:堆与栈。
  其中堆是所有线程共享的一块内存,几乎所有对象的分配都在这块内存中。而栈则是线程自己私有的,只存储线程自己的局部变量等信息。每个线程都有自己的栈,栈信息无法在线程之间共享。
  一般情况下,每个线程如果有新建的对象,那么会跟 JVM 申请在堆上创建对应的对象,而线程的栈则存储了指向堆对象的指针。每当一个线程想创建一个对象时,首先会请求 JVM,之后 JVM 进行协调,创建完成之后再告诉线程,线程最后将引用放到栈中。
  在对象创建的这个过程,堆和栈之间的关系就像是列车的中央调度室和火车的关系。每次线程需要分配内存空间,都需要去到堆去申请空间,会耗费不少时间和精力。
  这个时候有人就发现,线程的有些对象其实别人也不会访问到,放在堆中貌似也没什么大作用。于是他提出: 对于这些其他线程不会访问的对象,我们能不能让线程自己分配在它自己的栈空间上?这样不就可以节省不少交互时间了么!
  这个方法确实不错,如果能实现应该可以提高对象创建的时间,提高虚拟机的运行效率。
  但问题是:我怎么知道哪些对象可以分配在栈上,哪些不行呢?
  其实聪明的软件工程师们早就解决了这个问题了,他们新造了一个名字:逃逸分析。
  那么什么是逃逸分析呢?
  从字面意思上来讲,逃逸分析的目的是判断对象的作用域是否有可能逃出函数体。例如下面的代码就显示了一个逃逸的对象: private static User user; private static void hello(){    u = new User();    u.name = "java.top.select";    u.website = "http://www.shuyi.me"; }
  对象实例 user 是类的成员变量,可以被任何线程访问,因此它属于逃逸对象。但如果我们将代码稍微改动一下,该对象就可以线程非逃逸的了。 private static void hello(){    User u = new User();    u.name = "java.top.select";    u.website = "http://www.shuyi.me"; }
  可以看到 user 实例作用域只在 hello 函数中,不会被其他线程访问到,也不会访问。所以该 user 实例对象的作用域只在该函数中,因此它并未发生逃逸。对于这样的情况,虚拟机就有可能将其分配在栈上,而不在堆上。
  看到这里,我相信许多人都应该明白了什么是栈上分配了。 简单点说,就是将本来应该分配在堆中的对象,让其分配在线程私有的栈上。通过这种方式,减少垃圾回收的压力,提高虚拟机的运行效率。 TLAB
  TLAB(Thread Local Allocation Buffer),即线程本地分配缓存。这是一块线程专用的内存分配区域,TLAB 占用的是 eden 区的空间。在 TLAB 启用的情况下(默认开启),JVM 会为每一个线程分配一块 TLAB 区域。
  那么问什么需要 TLAB 呢?这是为了加速对象的分配!
  由于对象一般分配在堆上,而堆事线程共用的,因此可能会有多个线程在堆上申请空间,而每一次的对象分配都必须线程同步,这样会降低内存分配的效率。
  考虑到对象分配是非常常见的操作,于是 JVM 使用 TLAB 这样的线程转悠区域来避免多线程冲突,提高对象分配效率。
  为了不至于导致 Eden 区被填充满,因此 TLAB 空间一般不会太大。因此大对象有可能无法在 TLAB 分配,只能直接分配到堆上。这其实是一种折中的设计哲学,因为大多数分配的对象都比较小,因此 TLAB 空间能满足大多数的需求。 PLAB
  PLAB(Promotion Local Allocation Buffers),即晋升本地分配缓存。 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.com/s/K040nLk4ZG-aEZ31ONvejA
  作者:陈树义
  如果感觉本文对你有帮助,点赞关注支持一下

中国各省最高山峰,上海最低,西藏最高,看看你都去过几个下盘点各省最高的山峰,看看你都知道几个呢(下)河北张家口小五台山(2882米)小五台山,位于河北省张家口市蔚县,最高峰海拔2882米,号称华北屋脊,这里空气清新,植被非常的丰富,而且众星迎接世界杯陈法蓉董璇晒手指舞,吴尊甩海报应援喜爱的球队卡塔尔世界杯比赛开幕在即,开幕式的表演嘉宾夏奇拉黑眼豆豆田柾国等已经现身卡塔尔,为世界杯开幕式做准备。歌手麻辣鸡所演唱的世界杯主题曲TukohTakaMV放出,炒热了不少氛围。娱乐万众瞩目的202122赛季全明星赛12月1日正式开启将在诸暨举行万众瞩目的全明星赛终于要来了,12月1日12月3日,将在浙江省诸暨市暨阳学院体育馆举办,项目总共分别为全明星正赛,技巧大赛,扣篮大赛,三分大赛。以及星锐赛,下面就来盘点每个项目的参世界杯冰火两重天卡塔尔球迷捂脸绝望,主帅黑脸,客队球迷狂喜卡塔尔世界杯首战打响,东道主卡塔尔队,迎战南美劲旅厄瓜多尔队,这场比赛也是本届世界杯的揭幕战。上半场比赛,卡塔尔队连续丢了2球,还险些03落后,不得不说,这是一个糟糕的结果,现场的有点时间,查查胜负彩第22144期的比赛球队的数据这一期的时间跨度比较长!北京时间的11月21日晚上9点到25号的凌晨三点!本期的赛事包含了世界杯的8个小组的14场比赛。从表面上看,很多场比赛对手之间的实力都较为明显!从18年的世澳洲旅游,登上海港大桥,俯瞰悉尼歌剧院悉尼海港大桥和悉尼歌剧院几乎就是这座城市的形象代表,这两个地标性建筑华丽丽地矗立在悉尼的杰克逊港湾,它们是观光客拍摄的照片里出镜率最高的景点。我们这次从陆海空各个角度,完整地欣赏了2022玉环文旦旅游节开幕11月19日,2022玉环文旦旅游节在浙江省台州玉环市清港镇垟根村开幕。本次文旦旅游节以山环海聚随心所玉为主题,市民可通过参观民俗表演文旦周末集市文旦会客厅文旦产业数字化平台农旅品黄山五日游,吃住行玩费用攻略一览头条创作挑战赛这些年,问过许多去黄山的人,尤其是跟团去的,黄山怎么玩的,去哪儿了,大都语焉不详,搞不清楚,还有说黄山不如庐山,不如泰山。这次去黄山也碰到许多人,都上了山了,还不清楚六色文旅多彩龙川传承百年的艺术奇葩龙川手擎木偶戏,又称鬼仔戏,是河源地区群众喜闻乐见的地方戏剧,是一门融合雕刻表演剧本舞蹈音乐等诸多要素在内的优秀传统民间艺术,2009年被列入广东省第三批非物质文化遗产名录。龙川手浙江常山最美10大古村落,寻找那些遗留的美丽风景浙江衢州,常山。四省通衢两浙首站之地,山水间依然民风淳朴,保留着许多美丽静美的古村落。一起来寻访最美10大古村落,你曾经去过几处?1金源村金源村,位于东案乡,距离常山县城20公里的央媒看万宁海南小镇香草种植助力乡村振兴斑兰椰卷斑兰蛋糕斑兰生椰摩卡印尼华侨詹舒敏想不到,她当年旨在留住华侨文化而开办的印尼糕点店,竟能成为游客喜爱的网红餐厅。在海南省万宁市兴隆华侨旅游经济区,詹舒敏的餐厅客人络绎不绝。
打糍粑心心念念的团圆视频加载中每个人心中都有一座家山每年打糍粑是家族重大节日或者重要日子里必须进行的活动。年的尾声,蒸糯米,打糍粑,在外工作的家人回家后体验浓浓的年味。虽然打糍粑已经由原来的石臼变成机除夕夜,汽车引擎盖上的生日峨眉山两交警岗位上匆匆许愿吹蜡烛昏黄的路灯下,一个插着蜡烛的蛋糕放在一辆警车引擎盖上,几名身穿蓝色制服的交警围拢在一起,鼓起腮帮吹蜡烛这是1月21日除夕夜一场特殊的庆生会,地点在峨眉山下的交警执勤岗。警车引擎盖上机场航班运行精算师让团圆来得更早一点正月初一,许多人正在享受春节假期。往日喧嚣的杭城平添了几分宁静,而在萧山国际机场联合指挥中心(IAC),却是热火朝天。一个健硕的身影穿梭其中,异常忙碌。他叫周得博,是杭州萧山国际机坚守岗位度佳节来源经济日报1月21日,工人在江苏连云港港东方公司码头泊位上装运物资,坚守岗位保生产。王春摄(中经视觉)1月21日,位于安徽省马鞍山的中国宝武马钢集团十四五规划新特钢项目建设现场,信任!外媒推测Switch的增产信心来源于王国之泪此前我们曾报道,有知情人士透露,任天堂计划在今年4月增加Switch的产量。对于一个发布近六年的主机来说,这是一个有些大胆冒进的决策。IGN分析指出,任天堂的信心来源于将在今年5月如果连林徽因都是绿茶的话,那这个世界上就没有好女人了不知从何时起,林徽因居然成了某些人口中的绿茶,对其口伐笔诛的。我想,如果连林徽因都是绿茶的话,那这个世界上就没有好女人了,因为她公德私德,于家于国,都十分的合格,堪称一个知大义明是还原一个真实的诸葛亮一躬耕陇亩,自负的官二代。诸葛亮于汉灵帝光和四年(181年)出生在琅琊郡阳都县的一个官吏之家,诸葛氏是琅琊的望族,先祖诸葛丰曾在西汉元帝时做过司隶校尉,诸葛亮的父亲诸葛珪在东汉末年开国少将曾腿伤住院,看护士熟悉,一问才知竟是新婚一年的妻子来源丨记闻历史如果您喜欢这篇文章,麻烦手动点击右上方的关注。感谢您的支持和鼓励,希望能带给您舒适的阅读体验。1931年,红军连长张行忠因腿伤住院。在医院,他遇到了一位奇怪的护士。这苹果Apple支持应用4。9更新支持118个新地区,新增3种语言IT之家1月31日消息,苹果对iPhone和iPad的Apple支持应用进行了重大升级,该应用已更新到4。9版本,从今天开始,该应用现在可以在118个新地区使用,并提供对三种新语言房价和人口,只能保一个任大首席曾经说过房地产周期,长期看人口,中期看政策,短期看金融。而这一轮救市之心,已然是司马昭之心。但是操作上,和以前相比,就不太一样了。首先,长期看人口这条线已经破了,这也就成了听我一句劝别再穿肉丝出门!看完这些素人街拍,你就明白了丝袜之于女人,好比性感的武器,但同时也是一把双刃剑,完善造型时尚感的同时,也能存在一些弊端,不利于整体形象气质的修饰。尤其是肉丝,很多女生都穿成了反面教材,暴露身材问题不说还拉低了