文档章节

Java GC 日志解析

K_ONE
 K_ONE
发布于 2015/11/17 15:28
字数 864
阅读 256
收藏 4

一、相关命令

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

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

-Xloggc:<filename>


二、详解

JVM【-server】

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

新生代:Parallel Scavenge 并行回收GC

年老代和持久代:Parallel Old并行GC


GC日志打印信息:

-XX:+PrintGCTimeStamps输出格式:

289.556: [GC [PSYoungGen: 314113K->15937K(300928K)] 405513K->107901K(407680K), 0.0178568 secs] [Times: user=0.06 sys=0.00, real=0.01 secs] 

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。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是指垃圾收集器消耗的实际时间。


-XX:+PrintGCDetails输出格式:

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日志打印信息:

-XX:+PrintGCTimeStamps输出格式:

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] 

9.259: [GC 9.259: [DefNew: 13924K->1089K(14400K), 0.0042760 secs] 45090K->32650K(46108K), 0.0043143 secs] [Times: user=0.02 sys=0.00, real=0.02 secs] 

说明:

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

DefNewGeneration 就是 default new generation


-XX:+PrintGCDetails输出格式:

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 :提供持久代空间信息;


本文转载自:http://jingyan.baidu.com/article/3ea51489c045d852e61bbaab.html

K_ONE
粉丝 5
博文 34
码字总数 23563
作品 0
杭州
程序员
私信 提问
[jvm]九java gc分析

Java GC就是JVM记录仪,书画了JVM各个分区的表演。 什么是 Java GC Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门...

菜鸟腾飞
2018/12/02
0
0
详解JVM内存管理与垃圾回收机制1 - 内存管理

Java应用程序是运行在JVM上的,得益于JVM的内存管理和垃圾收集机制,开发人员的效率得到了显著提升,也不容易出现内存溢出和泄漏问题。但正是因为开发人员把内存的控制权交给了JVM,一旦出现...

方志朋
2018/11/25
0
0
一次让人难以忘怀的排查频繁Full GC过程

我们的Java应用因频繁FULL GC导致性能降低很多,经过多人的定位也没有结论,于是我自主请命,经过一天的研究终于搞定了,现把经验与大家共享,相关的gc日志如下: 4.758: [Full GC [PSYoung...

DEC_LIU
2013/10/13
1K
0
线上Java应用排查和诊断规范

@郑昀 整理 标准做法一:OOM触发HeadpDump 目的: OOM发生时,输出堆栈快照文件,供研发人员分析。 在JVM中,如果98%的时间是用于 GC 且可用的 Heap size 不足2%的时候,将抛出 OOM 异常。...

旁观者-郑昀
2013/09/26
147
0
Java拾遗:005 - Java的四种引用类型

简介 Java中为了让程序员可以自己控制对象生命周期,提供了四种引用方式,都继承自类,它们分别是:强引用、软引用、弱引用、虚引用。 强引用(FinalReference / Finalizer) 在Java中像这种...

一别丶经年
2018/08/03
50
0

没有更多内容

加载失败,请刷新页面

加载更多

c++ 虚基类

c++ 虚基类 p556

天王盖地虎626
27分钟前
41
0
Java中的面向对象

一、面向对象 面向对象和面向过程的区别 过程就是函数,就是写方法,就是方法的一种实现。 对象就是将函数,属性的一种封装。用人们思考习惯的方式思考问题。 如何自定义类 修饰符 类名{ //成...

zhiruochujian
36分钟前
3
0
k8s删除Terminating状态的命名空间

背景: 我们都知道在k8s中namespace有两种常见的状态,即Active和Terminating状态,其中后者一般会比较少见,只有当对应的命名空间下还存在运行的资源,但是该命名空间被删除时才会出现所谓的...

Andy-xu
38分钟前
32
0
seata源码阅读笔记

seata源码阅读笔记 本文没有seata的使用方法,怎么使用seata可以参考官方示例,详细的很。 本文基于v0.8.0版本,本文没贴代码。 seata中的三个重要部分: TC:事务协调器,维护全局事务和分支...

东都大狼狗
51分钟前
21
0
Rust:最小化窗口后 CPU占用率高 (winit,glutin,imgui-rust)

最近试着用 imgui-rust 绘制界面,发现窗口最小化后CPU占用会增大。 查询的资料如下: https://github.com/rust-windowing/winit/issues/783 https://github.com/ocornut/imgui/issues/1151 ...

reter
56分钟前
32
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部