`

JVM笔记九-GC收集器日志信息学习

jvm 
阅读更多

在上一篇文章中,我们通过代码运行结果,查看到JVM的堆内存逻辑上分区是三部分,物理上分区是2部分,以及是新生代分区三部分,占比分布是8/1/1。而且我们还通过代码和堆JVM参数配置,制造出了OOM异常。下面我们就来分析GC回收器的日志信息。

先来看看,OOM后,GC详细日志信息:

dd604a3c4cda17304edcc43b03106d58.png

a70d5ba58de4ea0abd8d983eddf53f53.png

新生区的伊甸园区GC日志分析

新生区的Eden区的GC,叫法:GC或者是YGC或者是MinorGC或者是轻GC

我们复制一条来分析:

[GC (Allocation Failure①) [PSYoungGen: 1877K②->472K③(2048K④)] 3697⑤K->2835K⑥(7680K⑦), 0.0010223⑧ secs] [Times: user=0.00⑨ sys=0.00⑩, real=0.00 secs]

e103f0661a6f2fc26933651b5e5fc8a4.png

分段说明:

  1. :GC的类型;

  2. :YongGC前新生代的内存占用量

  3. :YoungGC后新生代的内存占用量;

  4. :新生代总内存大小;

  5. :YoungGC前JVM堆内存占用量;

  6. :YoungGc后JVM堆内存使用量;

  7. :JVM堆内存总大小;

  8. :YoungGC耗时

  9. :YoungGC用户耗时;

  10. :YoungGC系统耗时

  11. :YoungGC实际耗时

年老代GC日志分析:

年老代GC的叫法:Full GC或者FGC或者MajorGC或者重GC

同样,我们拿出OOM之前的一条GC日志进行分析

[Full GC (Ergonomics①) [PSYoungGen②: 96K③->0K④ (2048K⑤)] [ParOldGen⑥: 5094K⑦->4007K⑧ (5632K⑨)] 5190K⑩->4007K十一 (7680K十二), [Metaspace十三: 3314K十四 ->3314K 十五(1056768K十六)], 0.0074234 secs十七] [Times: user=0.08十八 sys=0.01十九, real=0.01 secs二十]:

标志说明:

  1. :GC类型

  2. :Young区

  3. :GC前Young区内存占用

  4. :GC后Young区内存占用

  5. :Young区总大小

  6. :Old区

  7. :GC前Old区内存占用

  8. :GC后Old区内存占用

  9. :Old区总大小

  10. :GC前堆内存占用

  11. :GC后堆内存占用

  12. :JVM堆内存总大小

  13. :元空间区

  14. :GC前占用内存

  15. :GC后占用内存

  16. :元空间总大小

  17. :GC耗时

  18. :用户耗时

  19. :系统耗时

  20. :实际耗时

如下图:

f6fd9d791cfcd48e9f61b3abad81a797.png

接下来,我们继续学习的是JVM垃圾回收的四种算法了。欢迎大家和凯哥(凯哥Java:kaigejava)继续一起学习:引用计数算法、复制算法、标记清除、标记压缩这四种算法。

 

分享到:
评论

相关推荐

    jvm 调优笔记-jvm.zip

    JVM调优是提高Java应用程序性能的关键步骤,涉及到多个方面,包括堆内存设置、垃圾收集器选择、类加载机制、线程管理等。以下是对这些关键知识点的详细阐述: 1. **堆内存配置** - **新生代与老年代**:JVM堆内存...

    JVM学习笔记(一)

    本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM的各种运行时信息,包括但不限于JVM进程与参数查看、垃圾收集信息、JVM锁信息等内容。 #### 二、查看JVM进程及参数 ##### 1. JPS - **用途**:列出主机上...

    马士兵jvm调优笔记.docx

    - `-XX:+PrintGC`:打印GC日志信息。 - `-XX:+AggressiveOpts`:启用更激进的优化策略。 - `-XX:+UseBiasedLocking`:启用偏向锁。 #### 四、JVM的垃圾回收集器 不同的垃圾回收集器针对不同的应用场景进行了优化:...

    JVM学习笔记

    ### JVM学习笔记 #### JVM内存模型 (JMM) JVM内存模型主要分为以下几个部分: - **Java堆**:这是所有线程共享的一块区域,在虚拟机启动时创建。主要用于存放对象实例,几乎所有的对象实例都在这里分配内存。 - *...

    JVM笔记(阳哥).zip

    《JVM笔记(阳哥)》是一份深入探讨Java虚拟机(JVM)的资料,由阳哥精心整理。这份笔记涵盖了JVM的基础概念、内存管理、类加载机制、性能优化等多个方面,对于理解Java程序的运行机制以及提升开发效率具有重要的...

    JVM学习资料+笔记

    1. 参数调整:通过设置JVM启动参数,如-Xms、-Xmx控制堆大小,-XX:+UseG1GC选择垃圾收集器,-XX:MaxHeapFreeRatio、-XX:MinHeapFreeRatio设定内存利用率等。 2. 内存调优:根据应用特点调整新生代、老年代的比例,...

    狂神说JVM探究.rar

    【狂神说JVM探究】是一份集合了多种格式的学习资料,主要涵盖了Java虚拟机(JVM)的基础知识。这份资料出自B站上的【狂神说Java】系列教程,为快速入门JVM提供了详实的笔记。以下是根据这些资源可能包含的一些关键...

    JVM 学习笔记(Java虚拟机)

    **JVM学习笔记(Java虚拟机)** Java虚拟机(JVM)是Java语言的核心组成部分,它是Java程序运行的平台,负责解释和执行字节码。深入理解JVM对于优化Java应用程序性能至关重要。本笔记将从以下几个方面详细介绍JVM:...

    jVM学习笔记.ppt

    新生代和旧生代采用不同的垃圾收集算法,例如Minor GC和Major GC,以确保高效且无内存泄漏的运行环境。通过调整JVM参数如-Xmx、-Xms、-Xmn等,可以定制堆的大小和新生代与Survivor的比例,以适应不同应用的需求。 ...

    jvm学习笔记(jvm内存模型&垃圾收集算法&类加载机制)

    - **跟踪收集器**:从GC Roots开始遍历对象,如果对象无法从GC Roots到达,视为可回收。常见的跟踪收集器有串行收集器、并行收集器和并发收集器。 3. **类加载机制** - 类加载过程包括加载、验证、准备、解析和...

    笔记-JVM三期.pdf

    JVM的性能调优主要包括内存管理和垃圾收集(GC)优化。内存优化涉及合理设置堆大小、新生代和老年代的比例,避免内存溢出。GC优化则关注垃圾收集的效率,通过调整GC算法、设置GC参数来减少停顿时间和提高系统响应...

    JVM性能学习笔记思维导图

    本文将根据"JVM性能学习笔记思维导图"的主题,详细阐述JVM的主要组成部分,性能调优的关键点以及相关的工具与实践策略。** 1. **JVM结构与内存模型** - **类装载器(ClassLoader)**:负责加载类文件,确保类在运行...

    JVM笔记.docx

    为了优化垃圾收集,可以设置-XX:+UseParallelGC、-XX:+UseG1GC或-XX:+UseConcMarkSweepGC等不同收集器。此外,还可以通过-XX:MaxTenuringThreshold设定对象晋升到老年代的阈值。 【总结】 理解JVM的结构和工作原理...

    jvm学习笔记.zip

    2. **选择合适的垃圾收集器**:不同的GC算法适用于不同的应用场景,选择能平衡吞吐量和响应时间的收集器。 3. **监控和诊断**:使用JMX(Java Management Extensions)或专门的工具如VisualVM,对JVM的内存使用和...

    JVM学习笔记核心知识点整理

    本文将围绕JVM的核心知识点进行深入探讨,主要包括类文件加载机制、运行时数据、JVM内存模型、GC算法以及垃圾收集器分类等内容。 #### 二、基础知识梳理 ##### 1. Java与JVM简介 - **Java**: 是一门面向对象的...

    jvm-study:jvm学习笔记

    本学习笔记旨在全面解析JVM的工作原理,涵盖内存管理、类加载机制、垃圾收集、性能调优等多个关键领域,帮助读者从基础到深入地掌握JVM。 1. **JVM结构与运行过程** - JVM由类装载器、运行时数据区、执行引擎、...

    JVM的学习笔记PDF版

    这份“JVM的学习笔记PDF版”应该包含了关于JVM的详细信息,帮助学习者深入理解这个复杂的系统。JVM允许Java代码跨平台运行,通过解释器、类加载器、垃圾收集器等组件实现“一次编写,到处运行”的理念。 1. **JVM...

    jvm原理分析课程笔记

    不同的垃圾收集器有不同的工作策略,如新生代GC、老年代GC,以及分代收集等。理解GC的工作原理,能帮助我们调整参数以提高应用的响应速度和内存利用率。 JVM的字节码执行引擎(也称为解释器)是Java代码运行的基础...

Global site tag (gtag.js) - Google Analytics