jstat命令实战及内存模型介绍

本文介绍了JVM内存模型,重点关注MinorGC和FullGC的过程。当老年代空间接近满时,会触发FullGC,造成程序暂停。通过`jstat-gcutil`命令监控内存使用,若FGC频繁且空间不释放,可能导致内存溢出。分析内存增长和GC耗时,有助于优化JVM配置和程序性能。
摘要由CSDN通过智能技术生成

首先看下jvm内存模型图

        内存在survivor区进行正常的minorGC,minorGC触发时,暂停程序的时间较短 ,影响很小,但是当满足一定条件,比如经过from-to增长年龄之后,到了一定的年龄,就会转移到老年代,老年代内存接近满的时候会触发fullGC,fullGC则会stop the world,停止掉程序来进行垃圾回收。

使用命令查看线上问题:

jstat -gcutil pid 1000 10

通过该命令获取的信息,可以分析Eden区每秒或者设置的每分钟增长的新生代的大小。可根据该分析推测出Young GC的出发频率和每次耗时。

老年代fullGC之后仍然占用满的 下一步就会内存溢出 老年代都放不下了。

结合我们的jvm内存模型,内存在survivor区进行正常的minorGC,minorGC触发时,暂停程序的时间较短 ,影响很小,但是当满足一定条件,比如经过from-to增长年龄之后,到了一定的年龄,就会转移到老年代,老年代内存接近满的时候会触发fullGC,fullGC则会stop the world,停止掉程序来进行垃圾回收,上面的打印结果中FGC如果很多达到几百个,且空间并不释放,这时候内存已经占满,虚拟机内存溢出,程序不可正常使用了。

虚拟机内存配置--

使用gcutil选项 此示例附加到lvmid 21891 并以 250 毫秒的间隔采集 7 个样本,并显示-gcutil选项指定的输出。

jstat -gcutil 21891 250 7

S0 S1 EOP YGC YGCT FGC FGCT GCT 

 12.44 0.00 27.20 9.49 96.70 78 0.176 5 0.495 0.672 

 12.44 0.00 62.16 9.49 96.70 78 0.176 5 0.495 0.672 

 12.44 0.00 83.97 9.49 96.70 78 0.176 5 0.495 0.672 

  0.00 7.74 0.00 9.51 96.70 79 0.177 5 0.495 0.673 

  0.00 7.74 23.37 9.51 96.70 79 0.177 5 0.495 0.673 

  0.00 7.74 43.82 9.51 96.70 79 0.177 5 0.495 0.673 

  0.00 7.74 58.11 9.51 96.71 79 0.177 5 0.495 0.673

此示例的输出显示在第 3 个和第 4 个样本之间发生了一次年轻代收集。收集耗时 0.001 秒,将对象从 eden 空间 (E) 提升到 old 空间 (O),导致 old 空间利用率从 9.49% 提高到 9.51%。在收集之前,幸存者空间的利用率为 12.44%,但在此收集之后,它的利用率仅为 7.74%。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值