游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

一文就带你把JVM并发标记清除回收,元数据内存管理给一次性搞

  元数据内存管理
  从JDK8开始,元数据从堆空间中被移除,放入本地内存中。为了更好地管理元数据空间,JVM也设计了一套独立的内存分配和回收的实现。在JDK16之前的实现中,元数据内存管理的底层实现也使用二叉树的内存块管理,使用的数据结构与CMS老生代中大块自由空间的数据结构完全相同。所以本节介绍一下元数据内存的管理。
  元数据区(也称为Metaspace)是JVM中一块非常重要的内存空间,应用运行时遇到元数据空间不足的情况会直接触发FullGC,对性能会产生一定的影响。内存管理
  Metaspace和类加载数据(ClassLoaderData,CLD)关联,简单地讲,每一个CLD都有一个Metaspace,CLD加载的所有类产生的元数据都在其对应的Metaspace中管理。
  整个JVM中所有的Metaspace使用的内存都通过VirtualSpaceList(简称VLS)管理,而VSL中的每一个节点(Node)使用VirtualSpaceNode(简称VSN)管理。使用VSN的目的是便于回收内存。数据整体结构图如图434所示。
  图434元数据空间内存管理整体结构
  每一个Node(即VSN)和VirtualSpace关联,VirtualSpace的内存使用总是按照顺序从头开始。但是类元数据的大小并不相同,导致Metaspace管理的内存块是多样化的,在类不再使用时还可以被卸载,占用的空间可以被回收。为了更好地管理元数据的分配和回收,在VSN中引入了以下两类结构:
  1)固定大小的结构,称为chunk。目前有3种chunk大小,分别是128B、512B和8KB。
  2)二叉树,管理超过8KB大小的内存块。
  VSN和VirtualSpace的关系如图435所示。
  图435VirtualSpaceNode和VirtualSpace关系示意图
  在图435中还有一个ChunkManager(简称CM)也是全局共享的,主要目的是当类被卸载时对应的Metaspace会被释放。但可能其使用的VSN中还存储其他的类元数据,所以VSN无法被回收,因此会将释放的元数据内存放入ChunkManager中,供后续的元数据分配使用。
  Metaspace中有一个成员变量SpaceManager,用于管理本Metaspace对应的CLD真正使用的内存块(包括固定大小的内存块和二叉树中的内存块)。在SpaceManager中还有一个BlockFreeList的链表,用于保存一些零碎的内存(这些内存通常来自类加载失败或者类因重定义被重新加载而释放的内存)。分配
  Metaspace的内存分配过程大体可以分为如下几步:
  1)尝试从BlockFreeList中进行分配,但是由于BlockFreeList对于小微内存直接使用链表方式管理,空间不连续,因此分配成本比较高。在JVM中会设置一定的条件,当满足这些条件时才能从BlockFreeList中分配。
  2)无法从BlockFreeList中分配时,从Metaspace中正在使用的chunk中分配,这个chunk相当于缓存,用于加速分配。
  3)没有可用的chunk时会分配一个chunk再响应分配。分配chunk的逻辑相当复杂:优先从ChunkManager中重用已经释放的chunk,如果无法找到合适的chunk,则需要从VirtualSpaceNode中分配;如果VirtualSpaceNode也无法满足分配需求,会扩展VirtualSpaceList的大小再来分配。
  VirtualSpaceList的扩展是指为VirtualSpaceList分配新的VirtualSpaceNode。每个VirtualSpaceNode的大小为256KB(无法在运行时态调整其大小),将VirtualSpaceNode限制为256KB的目的是便于回收VirtualSpaceNode,当整个VirtualSpaceNode没有任何chunk时就可以被回收。回收
  理解了Metaspace的分配以后,其回收过程就不难理解了。由于Metaspace和CLD相关联,当CLD被卸载以后就可以执行Metaspace的回收。
  Metaspace的回收首先是将卸载的类元数据内存块归还到ChunkManager中,以便后续再利用。在这一步中并不会真正释放内存,仅仅是将内存归还到ChunkManager中,以便其再次被利用。而Metaspace真正的回收是针对VirtualSpaceNode的回收,当且仅当VirtualSpaceNode中所有的chunk都是空闲的才能被释放,而这样的情况并不常见。通常来说,Metaspace的回收仅仅是将类元数据占用的空间释放再利用,很少能真正地回收内存。
  在实际工作中可能会遇到Metaspace频繁触发FullGC的情况,通常有两种可能:一是Metaspace空间太小,无法满足应用的需要;二是Metaspace碎片化率非常高,导致内存利用率不高。对于这两种情况,目前并没有特别好的解决方法,一方面要在应用中尽可能避免大量地、无限制地使用反射等消耗元数据空间的操作,另一方面可以考虑设置更大的元数据空间。元数据管理的优化
  在JDK16中正式合入一个关于元数据的补丁(patch),用于优化元数据的管理,详细内容参考JEP387〔1〕。这个特性本质上最大的改变是:
  ChunkManager中chunk使用伙伴存储来管理。伙伴存储管理是一个非常经典的内存管理技术,它分配速度快,造成的内存碎片少。
  伙伴存储可以简单地概括如下将内存块大小按照2的幂次划分,假设内存块从上向下逐步变小,上一层的内存块的大小等于下一层两个内存块的大小,在下一层内存不足时可以从上一层获取一个内存块并拆分为下一层的两个内存块,当下一层两个空闲的内存块连续时可以合并到上一层变为一个内存块。
  元数据的chunk中共划分为13层,最大的内存块是第0层,为4MB,最小的内存块是第12层,为1KB。每一层都是一个FreeList,管理相同大小的内存块,如图436所示。
  图436伙伴存储示意图
  使用新的管理方式来分配元数据,通常根据内存需要的大小从期望的level的FreeList中分配内存。当无法满足分配时,会从更大的内存块中尝试分配,这就涉及内存块的拆分。在JDK16的实现中,按照如下顺序进行内存分配:
  1)从level、level1、level2中依次请求分配内存,此时查找的是已经使用的内存块。
  2)如果不成功,从level0中依次请求分配内存,此时查找的是已经使用的内存块。
  3)如果不成功,再次尝试,从level12中依次请求分配内存,此时查找的是已经使用的内存块。
  4)如果不成功,从level12中依次请求分配内存,此时查找的是是否存在完全未使用的内存块。
  5)如果不成功,从level0中依次请求分配内存,此时查找的是是否存在完全未使用的内存块。
  6)如果不成功,重新请求一个VirtualSpaceNode(大小为8MB),可以拆分成两个第0层的内存块,再次尝试分配。
  另外,通常情况下元数据的分配是从chunk中获得的,但是在一些特殊的场景中,例如类加载失败或者类因重定义被重新加载,可能会导致需要释放内存。将这些内存单独管理起来并且重用,可以有效地提高内存使用的效率。使用FreeBlock的方式管理释放的内存,在FreeBlock中采用BinList和BinTree管理释放的内存。本文给大家讲解的内容是JVM垃圾回收器详解:并发标记清除回收,元数据内存管理下篇文章给大家讲解的内容是JVM垃圾回收器详解:并行回收的内存管理感谢大家的支持!

哈登女神领唱足球世界杯主题曲!顶级身材,曾将76人核心写进歌北京时间11月20日,卡塔尔足球世界杯主题曲《TukohTaka》上线,引发网友吐槽。很多人表示,这是自己听过的最难听的歌曲,和之前的主题曲差别很大。该主题曲领唱者是Ni……王者荣耀最甜CP不务正业,圣诞节连续冲分三天,送一百套貂蝉皮相信有很多年轻的游戏爱好者,都希望能在游戏中遇到一些志趣相投的朋友,或者说能在大家都戴着面具的情况下,在游戏中找到一位拥有相同爱好的伴侣。只不过由于大部分人在游戏中,反而……农村有句俗语人睡三觉,命比纸薄有道理吗?我认为人睡三觉,命比纸薄的说法有一定的可取之处。有三种觉不能睡,不然会对人们的身体健康产生不良的影响,严重时甚至会威胁到生命。那么,到底是哪三种觉?睡懒觉现在大部分的人都……我的战痘经历济宁市第一人民医院精准服务,专病专治爱美之心人皆有之,可是不知道从什么时候开始,我的脸上开始起痘痘,不是这里一个就是那里一个,开始我并没有太在意,青春痘嘛,长它说明我还年轻,但是慢慢的痘痘越来越多,我也开始了我的……目前三笔价格过高和两笔物超所值的转会!你看好谁?夏季转会窗口已经到来,几家欧洲巨头正在寻求在未来几个月内提高自己排名的机会,我们已经看到一些备受瞩目的交易即将达成。今年夏天,与最近的交易不同,有一大批顶级球员可以免费获……台湾十大殿堂级歌手排名,80后应该都认识!1,邓丽君邓丽君(1953年1月29日1995年5月8日),1969年,因演唱台湾首部连续剧《晶晶》的同名主题曲而在台湾成名。1974年,凭借日文歌曲《空港》获得日本唱片……Dota2LGD调查结果,教练xiao8未涉及假赛,网友原来2021年中国电竞整体的成绩属实一般,要不是EDG战队取得了LOL世界赛冠军,转移了部分关注,可能倒在DOTA2TI10总决赛舞台上的PSG。LGD战队会被愤怒的DOTA玩家一……400亿存款,就这么没了吗?(文末照例有一张图总结)大家好,我是很帅的分析师视金钱如路虎的章闰土今天我打算来聊聊河南村镇银行取不出存款事件咱们国家的居民储蓄率还是比较高……投资实盘炒股就是做生意,低买高卖,贱进贵出声明:投资有风险,入市需谨慎,笔者撰文目的记录自己的思考、成长痕迹,万一对看到的小伙伴有一丝借鉴,或者做一个反面教材,那都是积攒的福报。自己的钱,自己做主,大家可以借鉴思路,借……APP越用越膨胀,如何拯救我们的手机存储空间?全文1337字,阅读约需1。5分钟民小生的手机最近总卡顿,仔细一看原来256G的内存也快满了。民小生制图换手机时长还不足一年,照片内存就占了半壁江……广西农民耗资1500万,建了座怪楼,未建完便吸引上万游客参观越南大叻有个CrazyHouse(疯屋子),原本是一家酒店,因其造型夸张怪异而成为当地著名景点。无独有偶,最近广西也有一座怪楼在短视频平台上悄然走红,被誉为中国版的CrazyH……核显玩游戏?或许你应该再等等一直以来很多玩家都看不起核显,但其实核显的性能早就今非昔比了,AMD新发布的锐龙7000系列处理器搭载了RDNA2核显,在Geekbench上的跑分比锐龙5000G系列的Veg……
小摩iPhone供应链正复苏,维持苹果350美元目标股价北京时间3月10日晚间消息,据国外媒体报道,摩根大通(JPMorgan)今日发布投资研究报告,继续维持苹果公司350美元的目标股价不变,尽管iPhone上个月在中国市场仅售出了……6种含毒素的蔬菜,菜市场常见,许多人也喜欢吃,烹饪不当会中毒导读:6种含毒素的蔬菜,菜市场常见,许多人也喜欢吃,烹饪不当会中毒在我国的蔬菜种类非常多,其中多数的蔬菜都可以放心食用,甚至还可以直接当水果一样生吃,这样的蔬菜有黄瓜、西……孩子太听话了未必是好事咱们很多中国家长教育孩子有个误区,那里是希望孩子听话,希望孩子乖一些。这样一来家长就省心,家长说让干啥就干啥,这样一来家长省心,老师省心,学校省心,以后单位省心,社会省心,长大……苹果MacPro将可选两个RadeonProW5700X显卡感谢IT之家网友Vision14的线索投递!IT之家3月31日消息苹果中国官网显示,苹果MacPro即将支持选配RadeonProW5700X图形处理器,配备16GBGD……在家办公的苹果员工为适应中国供应商上夜班3月31日上午消息,自3月初以来,因为疫情影响,苹果公司位于硅谷总部和世界其他地区的大多数员工一直在家里工作。外媒《TheInformation》的一篇报道,概述了这个以保密文……最新爆料苹果iPhone9将在4月发布并上市IT之家3月27日消息此前苹果一夜发布了MacBookAir2020、iPadPro2020、新款Macmini等新品,根据最新爆料,大家企盼的iPhone9(或称iPhone……苹果不慌富士康称仍计划2月10日恢复生产北京时间4日消息,包括富士康在内的苹果主要供应商计划于2月10日恢复在中国的大规模生产,尽管受到新型冠状病毒肺炎疫情的影响。富士康的母公司鸿海精密集团周二表示,仍然预计能……硬刚到底,苹果准备为解锁iPhone打官司库克已召集高级顾问北京时间1月16日早间消息,据国外媒体报道,苹果正在准备与美国联邦调查局(FBI)进行一场离奇的法律战,原因是FBI要求苹果帮助他们破解彭萨科拉海军基地枪击事件中的枪手所使用的……苹果将于1月29日发布2020第一财季财报1月15日下午消息,苹果宣布将于美国东部时间1月28日公布2020第一财季财报。此外,苹果将在美国东部时间1月28日下午5点(北京时间1月29日凌晨6点)举行财报电话会议……苹果给iPad加上一个激光雷达,暗示AR让人兴奋的未来没有发布会,也没有JohnnyIvy带有磁性的英伦解说,刚刚发布的iPadPro可以说相当低调。不过在距离上一代产品发布近两年后,这次iPadPro的升级确实亮点颇多,也因此引……博主改进了亿下苹果灵动岛甚至可以一键抢大米虽然不少人吐槽苹果14的创新设计不多,但是看到灵动岛的设计后,路转粉的也不再少数,其采用了药丸形开孔,很好的融合了软件UI交互和药丸屏设计结合。灵动岛可实现大量交互,包括显示来……苹果妙控鼠标2妙控板2被列入AppleStoreiPad配件感谢IT之家网友仿达的线索投递!IT之家3月21日消息苹果近日正式发布新款iPadPro以及全新的带触控板的iPad保护壳,同时也预告了在iPadOS13。4中为iPad……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网