full gc 监控 分析

命令查看gc情况,以及jvm内存使用比例

  1. 如何发现是否发生FULL GC和FULL GC是否频繁 使用JDK自带的轻量级小工具jstat 语法结构:

    Usage: jstat -help|-options jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

    参数解释: Options — 选项,我们一般使用 -gcutil 查看gc情况 vmid — VM的进程号,即当前运行的java进程号 interval– 间隔时间,单位为秒或者毫秒 count — 打印次数,如果缺省则打印无数次 比如 /opt/taobao/java/bin/jstat –gcutil pid 5000 jstat -gcutil pid

[root@wangfw-smarttrip-dev-7 ~]# jstat -gcutil 15393 S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 22.50 71.58 34.74 97.33 3961 44.900 26 6.021 50.921


    S0 — Heap上的 Survivor space 0 区已使用空间的百分比 

    S1 — Heap上的 Survivor space 1 区已使用空间的百分比 

    E — Heap上的 Eden space 区已使用空间的百分比 

    O — Heap上的 Old space 区已使用空间的百分比 

    P — Perm space 区已使用空间的百分比 

    YGC — 从应用程序启动到采样时发生 Young GC 的次数 

    YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒) 

    FGC — 从应用程序启动到采样时发生 Full GC 的次数 

    FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)

     GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒) 

    通过FGC我们可以发现系统是否发生FULL GC和FULL GC的频率



2.  FULL GC分析和问题定位 

    a.     GC log收集和分析 

    (1)在JVM启动参数增加:-verbose:gc -Xloggc:<file_name>  -XX:+Print        GCDetails -XX:+PrintGCDateStamps

    PrintGCTimeStamp只能获得相对时间,建议使用PrintGCDateStamps获得full gc 发生的绝对时间 

      (2)如果采用CMS GC,仔细分析jstat FGC输出和GC 日志会发现, CMS的每个并发GC周期则有两个stop-the-world阶段——initial mark与final re-mark,使得CMS的每个并发GC周期总共会更新full GC计数器两次,initial mark与final re-mark各一次 
    
    b.     Dump JVM 内存快照 
/opt/taobao/java/bin/jmap -dump:format=b,file=dump.bin pid 

    这里有一个问题是什么时候进行dump? 

    一种方法是前面提到的用jstat工具观察,当OLD区到达比较高的比例如60%,一般会很快触发一次FULL GC,可以进行一次DUMP,在FULL GC发生以后再DUMP一次,这样比较就可以发现到底是哪些对象导致不停的FULL GC 

    另外一种方法是通过配置JVM参数 
-XX:+HeapDumpBeforeFullGC -XX:+HeapDumpAfterFullGC分别用于指定在full GC之前与之后生成heap dump 

    c.     利用MAT((Memory Analyzer Tool)工具分析dump文件 

    关于MAT具体使用方法网上有很多介绍,这里不做详细展开,这里需要注意的是: 

    (1)   MAT缺省只分析reachable的对象,unreachable的对象(将被收集掉的对象)被忽略,而分析FULL GC频繁原因时unreachable object也应该同时被重点关注。如果要显示unreachable的对象细节必须用mat 1.1以上版本并且打开选项“keep unreachable object” 

    (2)   通常dump文件会好几个G,无法在windows上直接进行分析,我们可以先把dump文件在linux上进行分析,再把分析好的文件拷贝到windows上,在windows上用MAT打开分析文件。

转载于:https://my.oschina.net/u/1412810/blog/751616

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值