美文网首页JAVA
JAVA学习笔记--GC日志解析

JAVA学习笔记--GC日志解析

作者: 曹金桂 | 来源:发表于2017-05-03 18:06 被阅读70次

JAVA学习笔记--GC日志解析

https://my.oschina.net/u/2269952/blog/531558
转发文章,记录下来,便于以后工作查询

1、相关命令

使用GC日志命令行选项为:

    -XX:+PrintGC 输出GC日志
    -XX:+PrintGCDetails 输出GC的详细日志
    -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
    -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
    -Xloggc:<filename> 可以指定文件路径
    // 如配置:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps

2、详解

JVM【-server】

glassfish应用服务器 -server 启动 垃圾收集器默认组合方式为

新生代:Parallel Scavenge 并行回收GC
年老代和持久代:Parallel Old并行GC

Minor GC输出格式:

293.271: [GC [PSYoungGen: 300865K->6577K(310720K)] 392829K->108873K(417472K), 0.0176464 secs] [Times: user=0.06 sys=0.00, real=0.01 secs] 

说明:

293.271是从jvm启动直到垃圾收集发生所经历的时间,GC表示这是一次Minor GC(新生代垃圾收集);

[PSYoungGen: 300865K->6577K(310720K)] 提供了新生代空间的信息,PSYoungGen,表示新生代使用的是多线程垃圾收集器Parallel Scavenge。(DefNew:Serial收集器;ParNew:ParNew收集器),300865K表示垃圾收集之前新生代占用空间,6577K表示垃圾收集之后新生代的空间。新生代又细分为一个Eden区和两个Survivor区,Minor GC之后Eden区为空,6577K就是Survivor占用的空间。括号里的310720K表示整个年轻代的大小。

392829K->108873K(417472K),表示垃圾收集之前(392829K)与之后(108873K)Java堆的大小(总堆417472K,堆大小包括新生代和年老代)由新生代和Java堆占用大小可以算出年老代占用空间,如,Java堆大小417472K,新生代大小310720K那么年老代占用空间是417472K-310720K=106752k;垃圾收集之前老年代占用的空间为392829K-300865K=91964k 垃圾收集之后老年代占用空间108873K-6577K=102296k.

0.0176464 secs表示垃圾收集过程所消耗的时间。

[Times: user=0.06 sys=0.00, real=0.01 secs] 提供cpu使用及时间消耗,user是用户模式垃圾收集消耗的cpu时间,实例中垃圾收集器消耗了0.06秒用户态cpu时间,sys是消耗系统态cpu时间,real是指垃圾收集器消耗的实际时间。

Full GC输出格式:

293.289: [Full GC [PSYoungGen: 6577K->0K(310720K)] [PSOldGen: 102295K->102198K(134208K)] 108873K->102198K(444928K) [PSPermGen: 59082K->58479K(104192K)], 0.3332354 secs] [Times: user=0.33 sys=0.00, real=0.33 secs] 

说明:

Full GC表示执行全局垃圾回收

[PSYoungGen: 6577K->0K(310720K)] 提供新生代空间信息,解释同上
[PSOldGen: 102295K->102198K(134208K)]提供了年老代空间信息;
108873K->102198K(444928K)整个堆空间信息;
[PSPermGen: 59082K->58479K(104192K)]提供了持久代空间信息。


JVM【-client】

glassfish应用服务器 默认 -client启动 垃圾收集器默认组合方式为

新生代:Serial串行GC (新生代使用-XX:+UseSerialGC收集器)
年老代和持久代:Serial Old 串行GC

GC日志打印信息:

Minor GC输出格式:

9.007: [GC 9.007: [DefNew: 13526K->1060K(14400K), 0.0041350 secs] 44692K->32226K(46108K), 0.0041767 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] 

说明:

DefNew表示新生代使用Serial串行GC垃圾收集器,defNew提供新生代空间信息;

DefNewGeneration 就是 default new generation

Full GC输出格式:

9.348: [GC 9.348: [DefNew: 13953K->976K(14400K), 0.0040943 secs]9.352: [Tenured: 32163K->32220K(32220K), 0.1182207 secs] 45514K->32338K(46620K), [Perm : 30467K->30467K(65536K)], 0.1224318 secs] [Times: user=0.12 sys=0.00, real=0.13 secs] 

DefNew:表示新生代使用Serial串行GC垃圾收集器,defNew提供新生代空间信息;
Tenured:提供年老代空间信息;
45514K->32338K(46620K):整个堆空间大小信息;
Perm :提供持久代空间信息;

相关文章

  • JAVA学习笔记--GC日志解析

    JAVA学习笔记--GC日志解析 https://my.oschina.net/u/2269952/blog/53...

  • java GC日志解析

    java GC详解 关键词: 结论:

  • Java GC日志分析

    1. 查看GC日志准备 2. 年轻代GC日志 3. CMS GC日志 4. CMS GC 7阶段解析 1.初始标记...

  • java学习笔记-日志篇

    java学习笔记-日志篇-目录 java日志篇(1)-日志概述 java日志篇(2)-JUL(java.util....

  • GC日志查看和分析

    GC日志查看和分析 GC日志查看 可以通过在java命令种加入参数来指定对应的gc类型,打印gc日志信息并输出至文...

  • GC日志

    阅读GC日志是处理Java虚拟机内存问题的基础技能。以下两端典型的GC日志: 33.125:[GC [DefNew...

  • Java GC 日志详解(一图读懂)

    Java GC日志可以通过 +PrintGCDetails开启 以ParallelGC为例 YoungGC日志解释...

  • 25-GC日志分析

    一、GC日志参数列表 通过阅读GC日志,可以了解Java虚拟机内存分配与回收策略 -XX:+PrintGC :输...

  • 通过 gc.log 调优 JVM

    一、GC 日志查看 GC 日志默认是关闭的,需要查看 GC 日志首先需要开启 GC 日志。 常用 GC 日志的配置...

  • 优化Java 第八章 GC日志,监视器,调优和工具

    本章,我们会介绍GC日志和监控的大量内容。这是Java性能调优可见部分最重要和最常被误解的部分。 介绍GC日志 G...

网友评论

    本文标题:JAVA学习笔记--GC日志解析

    本文链接:https://www.haomeiwen.com/subject/lflltxtx.html