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


    在上一篇文章中,我们通过代码运行结果,查看到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)继续一起学习:引用计数算法、复制算法、标记清除、标记压缩这四种算法。

  • 相关阅读:
    小程序开发记录一:开发流程
    js小功能3:一个简单的计算器功能
    js小功能2:切换
    js小功能1:全选全不选
    通过javascript得到当前的日期和计算出该班级的平均分
    CSS 使用calc()获取当前可视屏幕高度
    javaScript基础题
    Python标准库03 路径与文件 (os.path包, glob包)
    Python标准库02 时间与日期 (time, datetime包)
    Python标准库01 正则表达式 (re包)
  • 原文地址:https://www.cnblogs.com/kaigejava/p/14014735.html
Copyright © 2020-2023  润新知