问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

【 JVM 】垃圾收集器——G1垃圾收集器

提问网友 发布时间:2025-01-04 02:22
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2025-01-05 20:02

G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器,旨在提升应用响应速度,减少GC停顿时间。G1将Java堆划分为多个大小相等的独立区域(Region),一般Region大小等于堆大小除以2048,例如堆大小为4096M,则Region大小为2M。G1保留了年轻代和老年代的概念,但它们不再是物理隔阂,而是(可以不连续)Region的集合。默认年轻代对堆内存的占比是5%,系统运行中JVM会根据需要动态调整年轻代的Region数量,但新生代的占比不会超过60%,可通过“-XX:G1MaxNewSizePercent”调整。



年轻代中的Eden和Survivor区域的默认比例保持8:1:1不变。一个Region可能在进行垃圾回收后,从年轻代转变为老年代,其区域功能可动态变化。G1垃圾收集器对对象转移至老年代的原则与以往相同,但对大对象的处理有所不同。G1有专门分配大对象的Region称为Humongous区,以避免大对象直接进入老年代导致的空间浪费。



在G1中,大对象的判定规则是一个对象超过了一个Region大小的50%。如果对象过大,可能会横跨多个Region存放。Humongous区专门用于存放短期巨型对象,避免其直接进入老年代,以节约老年代空间,降低GC开销。Full GC不仅收集年轻代和老年代,也一并回收Humongous区。



回收算法主要采用复制算法,将一个region中的存活对象复制到另一个region中,这几乎不会有太多的内存碎片。G1垃圾收集器的特征和GC步骤包括:





使用复制算法进行回收,减少内存碎片的产生。




指定GC工作线程数量(-XX:ParallelGCThreads)。




指定分区大小(-XX:G1HeapRegionSize,范围1MB~32MB,且必须是2的N次幂),默认将整堆划分为2048个分区。




设定目标暂停时间(-XX:MaxGCPauseMillis,默认200ms)。




配置新生代内存初始空间(-XX:G1NewSizePercent,默认整堆5%)。




设置新生代内存最大空间(-XX:G1MaxNewSizePercent)。




配置Survivor区域的填充容量(-XX:TargetSurvivorRatio,默认50%),当Survivor区域的一批对象总和超过50%时,会将年龄大于一定值的对象放入老年代。




设置最大年龄阈值(-XX:MaxTenuringThreshold,默认15)。




老年代占用空间达到整堆内存阈值(-XX:InitiatingHeapOccupancyPercent,默认45%)时,执行新生代和老年代的混合收集(MixedGC)。




控制region中的存活对象回收(-XX:G1MixedGCLiveThresholdPercent,默认85%)。




在一次回收过程中指定做几次筛选回收(-XX:G1MixedGCCountTarget,默认8次),通过多次筛选回收降低系统停顿时间。




空闲出来的Region数量达到堆内存的5%(-XX:G1HeapWastePercent,默认5%)时,停止混合回收。





G1垃圾收集器适用于对系统响应速度要求较高且内存较大的场景。优化建议核心在于调整`-XX:MaxGCPauseMills`参数,以平衡年轻代GC频率和存活对象进入老年代的效率,避免频繁触发Mixed GC。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

HBase–RegionServer宕机恢复原理 一文搞懂AWS Region, VPC, VPC endpoint,AZ, Subnet 基础篇上 在region服务器中,为什么让成百上千的region共用一 幻塔ssr武器推荐_幻塔2.0版本指南,自选SSR值得收藏 幻塔两个自选ssr怎么获取 幻塔自选ssr怎么领取 自选ssr领取方法 幻塔3.3自选ssr在哪领 幻塔 幻塔送的ssr在哪? 幻塔 幻塔2.0自选ssr在哪里领? 谁能给我个篮球位置的建议 谁能告诉我篮球上共有几个位置,各个位置的职责是什么?谢谢! 请给我篮球场上五个位置的英文名称以及篮板盖帽抢断助攻的英文名称... 求助2个外国电影的名字 为什么自动启停电瓶贵 表情包公元过是什么意思 赡养老人的协议书是否有法律效力 支付赡养费承诺书有效力吗 蛋糕的尺寸是怎样计算的 退休认证老通不过怎么办 软件测试 | SQLite管理工具 ...喝了,但是肚子变胖了为什么 仅仅是肚子 不喝啤酒只喝白酒 客厅墙砖贴好半年后表面出现裂纹是什么原因 墙砖贴完后断裂是什么原因 炒股最少需要多少钱? 炒股最少要多少钱? 英语导游证要怎么考啊? 想兼职做英语导游,如何考英语导游的导游证 怎样发表英文论文? RX480配什么CPU和主板好适合AMDRX480搭配的主板与CPU解答 我新组装的电脑,CPU是I7-6700k,显卡是迪兰恒进RX480,主板是技嘉超频1199... 三a平台电脑配置吃鸡绝地求生笔记本配置要求 mysql如何只更新查询到的第一条数据 世界上十大最凶残的动物是哪十大 世界艾滋病日关艾计划 世界艾滋病日历史起源 世界艾滋病日各国支持 世界艾滋病日设立目的 【医伴旅】生命至上,终结艾滋,健康平等,知“艾”才能更好的防“艾... 商用馒头发面配方 山药炒肉片如何制作简单又好吃?
Top