JVM调优学习之旅-(4)G1

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

G1垃圾回收器介绍

G1垃圾回收器在我们设置堆内存大小后,JVM启动在默认情况下把堆内存拆分为大小均等的region具体大小是—堆内存/2048。region大小是2的倍数。

可以通过 “-XX:G1HeapRegionSize” 设置region大小。

region 数量是动态的。初始的时候新生代region只有5%,会随着新生代增加region跟着增加。 垃圾回收后也会减少。默认新生代的占比不会超过60%,可以通过**“- XX:G1MaxNewSizePercent”**设置

新生代

新生代也是有eden区 s1,s2 的区别的他们的数量也是根据region的增加而增加,也是根据一定比例来决定的。“-XX:SurvivorRatio=8”

什么时候进入老年代
  1. 当年龄到了会进入老年代,年龄设置**“-XX:MaxTenuringThreshold”** 默认15
  2. 动态年龄规划或某一次发生GC后存货对象大于s区一半。
大对象去哪了

G1 会有专门的region 存放大对象,甚至一个大对象可以放几个region。由于新生代region是逐渐变大,所以大对象是在还没分配新生代的时候,region 就是用来存放大对象的。新生代 老年代GC 都会来回收大对象。

G1垃圾回收的过程
  1. 初始标记:先STW,然后对各个线程栈内存中的局部变量代表的GC Roots,以及方法区中的类静态变量代表的GC Roots,进行扫描,标记出来他们直接引用的那些对象。
JVM性能实践——G1 垃圾收集器分析、 前言 关于G1 GC以及其他垃圾收集器的介绍可以参考前一篇JVM性能实践——G1 垃圾收集器介绍篇。了解了G1垃圾收集器的运行机制之后,就可以针对一些GC相关参数来整内存分配以及运行策略。下文的主要针对G1垃圾收集器进行介绍,以及会分析一下G1 GC的日志格式。 G1 GC日志分析 在执行具体的任务前,需要结合GC日志以及应用本身的特点。打印详细GClog,... 阅读详情

相关推荐

JVM 11化指南:如何进行JVMJVM参数有哪些

在实际的Java应用开发中,JVMJava Virtual Machine)是提升应用性能的关键步骤。合理的可以显著提升应用的响应速度、吞吐量,并且减少内存消耗和GC(Garbage Collection)停顿时间。本文将详细介绍JVM 11化指南,包含如何进行JVM以及常见的JVM参数,并提供3个实用的代码示例。

程序员Linc 3046

堆里面的分有哪些? Eden from to 老年 说说他们的特点

在这个示例中,我们创建了三个1MB大小的对象,当Eden被填满时,会触发一次Minor GC。在Minor GC后,obj1和obj2被移动到To,而obj3仍然留在Eden。这样的操作会不断重复,直到Survivor也被填满,或者对象年龄达到一定阈值,最终存活的对象会被移动到老年进行进一步的垃圾回收。堆是Java虚拟机中的一个域,用于存放对象实例,其中包括了年轻代和老年代两个分。年轻代又分为Eden、From和To

牛肉胡辣汤 1099

JVM原理及(6)——G1收集器及G1日志分析

系列文章规划: JVM基础(1)——内存模型 JVM基础(2)——内存管理 JVM基础(3)——编译机制 JVM基础(4)——类加载机制 JVM基础(5)——垃圾回收和 JVM基础(6)——G1收集器及G1日志分析 JVM基础(7)——jdk常用内置工具 1 G1简介 1.1 概述 G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多核处理器及大...

Let it go 1万+

jvm的新生代为什么要分成eden、s0和s1

JVM的垃圾回收机制中,新生代(Young Generation)被进一步划分为三个域:Eden、S0(Survivor 0,又称From Survivor)和S1(Survivor 1,又称To Survivor)。这种逐步晋升的机制有助于过滤掉生命周期较短的对象,将生命周期较长的对象才转移到老年代,以减少老年代的垃圾回收压力。总结来说,JVM将新生代划分为Eden、S0和S1,是为了提高垃圾回收效率,避免内存碎片化,并有效地管理对象的生命周期,确保老年代不会过早被填满。

u012534547的博客 1476

02-JVM堆里面的分Eden,survival (from+ to),老年代,各自的特点?

在过去自定义类加载器使用不普遍的时候,类几乎是“静态的” 并且很少被卸载和回收,因此类也可以被看成 “永久的”(这也就是永久代的含义),另外由于类作为JVM实现的一部分,它们不由程序来创建,所以为了和堆分开来呢,就给了 “方法” 这样一个名字用来存储类的信息。因此,默认情况下,元空间的大小仅受本地内存限制。在JDK 8之前,方法的具体实现方法是永久代,永久代是HotSpot虚拟机给出的实现,但是对于其他虚拟机实现,譬如BEA JRockit、IBM J9等来说,是不存在永久代的概念的。

鸣鼓ming的博客 2951

java eden_请说明一下eden和survial的含义以及工作原理?

考察点:JVM目前主流的虚拟机实现都采用了分代收集的思想,把整个堆划分为新生代和老年代;新生代又被划分成Eden 空间、 From Survivor 和 To Survivor 三块域。我们把Eden : From Survivor : To Survivor 空间大小设成 8 : 1 : 1 ,对象总是在 Eden 出生, From Survivor 保存当前的幸存对象, To Survi...

weixin_32467423的博客 4191

JAVA核心知识》学习笔记(JVM-1

JVM (1) 基本概念: JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。 JVM 是运行在操作系统之上的,它与硬件没有直接 的交互 Hotspot JVM 后台运行的系统线程主要有下面几个: ...

chongyi1654的博客 492

JVM】如何进行JVM?一篇文章就够了!

深入解读JVM性能的监控、定位和方案,阐述jps/stat/jstack、MAT等常用性能分析工具的使用,提出JVM参数、内存溢出、内存泄漏、CPU飙升、GC频繁等实际场景下JVM的方案。

种一棵树最好的时间是十年前,其次是现在 4万+

jvm

jvm相关指令,top,jstack,jmap,jinfo,jstat,jvm相关参数

weixin_38612401的博客 6万+

JVM基础和

CMS和G1回收器,G1的并发标记周期,为什么要JVM? 减少GC,特别是FullGC对象先在堆的 Eden 分配大对象直接进入老年代长期存活的对象将直接进入老年代. 当 Eden 没有足够的空间进行分配时,

分享技术,享受生活 2万+

JVM性能详解

前面我们学习了整个JVM系列,最终目标的不仅仅是了解JVM的基础知识,也是为了进行JVM性能做准备。这篇文章带领大家学习JVM性能的知识。 性能 性能包含多个层次,比如:架构、代码JVM、数据库、操作系统等。 架构和代码JVM的基础,其中架构是对系统影响最大的。 性能基本上按照以下步骤进行:明确化目标、发现性能瓶颈、性能、通过监控及...

程序新视界 7673

JVM化:如何进行JVMJVM参数有哪些

Java虚拟机(JVM)是Java应用运行的核心环境。JVM的性能化对于提高应用性能、减少资源消耗和提升系统稳定性至关重要。本文将深入探讨JVM方法和相关参数,以帮助开发者和系统管理员有效地化他们的Java应用。本文,已收录于,我的技术网站,有大厂完整面经,工作技术,架构师成长之路,等经验分享JVM通常涉及到对堆内存、垃圾回收策略和线程堆栈大小等方面的整。化的目标是确保JVM在执行Java应用时能够高效地使用系统资源。

架构师专栏 5057

JVM G1性能

G1整体上保持默认配置即可,最多配置一下 pause-time goal或堆内存大小()。不像其他的垃圾回收器,G1默认已经在最大吞吐和低时延之间做了平衡。但是,G1在堆中的增量式空间回收和pause-time控制机制给应用线程和回收效率上都带来了负担。如果需要大吞吐(非在线业务,如后台任务),可以适当大期望最大停顿时间() 或者大堆空间。如果需要低时延(在线业务),可以小最大停顿时间。不要配置,等

weixin_41866717的博客 1636

JAVA8指南:如何进行JVMJVM参数

JAVA8

升仔聊编程的博客 2079

JVM

因此,建议在之前先进行性能分析和监测,针对性地整参数,并进行实际测试和验证,以确保化的效果和稳定性。每个参数都有特定的作用和含义,根据具体需求和应用程序的特点,选择适当的参数进行配置和整。:垃圾回收是JVM的重要功能,但不恰当的垃圾回收策略可能导致长时间的停顿和性能下降。JVM旨在选择合适的垃圾回收器、整垃圾回收参数,平衡吞吐量和停顿时间,减少垃圾回收对应用程序的影响。通过选择合适的垃圾回收器算法和参数,整垃圾回收策略,可以降低垃圾回收的频率,提高系统的运行效率。

CACSDN的博客 8833

JVM4:详解JVM与经典案例分析

JVM介绍以及案例分析

m0_59624833的博客 1571

JVM 性能与 G1 GC 化实践

在进行线上时,首先需要准确分析问题类型,识别性能瓶颈。分析 GC 日志:通过分析 GC 日志,观察 GC 停顿时间、频率、回收效果等指标,识别是否存在长时间的 GC 停顿或频繁的 Full GC。检查垃圾未回收的原因:在发现 GC 停顿或 Full GC 频繁的情况下,进一步分析是哪个阶段的垃圾回收未被充分触发。年轻代回收不足:可能由于设置过小,导致年轻代频繁溢出到老年代,增加老年代的垃圾回收压力。老年代增长过快:如果设置过低,可能导致对象提前晋升到老年代,增加 Full GC 的频率。

qq_36392309的博客 1456

JVM深度:深入 G1、ZGC 等新型垃圾回收器的适用场景与参数

JVM应围绕业务目标平衡吞吐、延迟和内存占用。G1适合4GB-几十GB堆的中等延迟需求场景,通过Region化堆和混合回收实现可控停顿;ZGC则针对大堆和极低延迟需求,采用并发压缩技术将停顿控制在1-2ms。需先明确目标(如在线交易侧重延迟,批处理侧重吞吐),通过GC日志分析症状(频繁GC、长停顿等),针对性整关键参数(如G1的MaxGCPauseMillis、ZGC的ConcGCThreads)。建议从默认配置开始,基于日志数据逐步化,先考虑升级JVM版本而非过度参。

qq_39476913的博客 1279
上一篇: JVM调优学习之旅-(3)ParNew+CMS 案例模拟实战
下一篇: JVM调优学习之旅-(5)初识gc日志 ParNew+CMS
yakax
博客等级 码龄7年 18粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值