JVM垃圾回收查看、分析和设置

0. jvm垃圾回收的基本概念
   0.1 什么是垃圾,主要是堆,堆是完全二叉树结构
       引用计数法
       可达性分析,解决引用计数法循环依赖问题
    0.2常用垃圾回收算法
       基本策略
            标记清除
            标记复制(年轻代8:1:1)
            标记整理(年老代)
        分代收集
            CMS
            G1

1.查看进程
    1.1 ps -ef|grep 部分jar包名 |grep -v 'grep'|awk '{ print $2}'
    1.2 jps也可以,前提是你知道进程的名字

2.查看堆信息
  2.1 jmap -heap pid 可以查看具体分配多少,垃圾回收器的类型
  2.2 jinfo pid |grep 'Command line' 查看启动jar时jvm参数
      Command line:  -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
    备注:-XX:NewRatio=4 新生代与老年代的比值 1:4
    -XX:ServerRatio=8 两个Survivor与Endn的比值 8:1:1
    -Xmn:年轻代大小 256 1:4 年老代
    CurenSwapMap 年老代并行收集器 ,标记清除,最小系统停顿
    Parrell 年轻代并行收集
    -XX:MetaspaceSize=128m 扩容时才用,java8的元空间Metaspace扩容到MetaspaceSize时发生FGC,默认初始是20.8,

3.查看gc情况
  3.1jstat -gcutil pid
    [centos@s221 /opt/arthasluo]$jstat -gcutil 65887
     S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
    100.00   0.00  25.20   2.81  96.40  94.59      8    0.180     0    0.000    0.180
    重点看FGC FGCT两个值 ,触发FGC(年老代,Metaspace(jdk1.8之前用永久代),显示调用System.gc())
  3.2用arthas查看,
    启动java -jar Arthas-boot.jar pid
    jvm
    
4.打印和分析GC日志
  -XX:+PrintGCDetails:打印详细GC信息,例如[GC [PSYoungGen: 46080K->7677K(53760K)] 46080K->9721K(186880K), 0.0109905 secs] 
  -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式,例如上一行中的2.002) 
  -XX:+PrintGCDateStamps 
  
     打印样例:2.002: [GC [PSYoungGen: 46080K->7677K(53760K)] 46080K->9721K(186880K), 0.0109905 secs] [Times: user=0.03 sys=0.00, real=0.01 secs] 
    (1)2.002:时间戳 
    (2)[PSYoungGen: 46080K->7677K(53760K)]:年轻代GC回收前大小—>回收后大小(总大小) 
    (3)46080K->9721K(186880K):整个堆GC回收前大小—>回收后大小(总大小) 
    (4)0.0109905 secs:Minor GC耗费时间 
    (5)[Times: user=0.03 sys=0.00, real=0.01 secs]:real表示GC实际耗费时间,user表示耗费所有CPU时间总和。注意在SerialGC中只有一个线程(CPU)执行GC,所以user=real,但是在Parallel GC中,有多个CPU参与GC,所以相对于Serial GC,real会缩短,user会增大
  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值