java old区_一次Jvm old过高的排查过程实战记录

本文记录了一次由于返回HTML数据导致的Java JVM老年代内存过高问题的排查过程。通过jstat监控发现老年代和年轻代占用过高,分析JVM参数如SurvivorRatio和MaxTenuringThreshold,揭示了对象过早晋升至老年代的原因。最终,通过jmap和jvisualvm分析dump文件,发现Char[], String, HashMap实例占用内存过大,是问题的主要原因。" 109998228,10086595,Python实现Excel数据处理与列表操作详解,"['Python', '数据处理', 'Excel', 'pandas']
摘要由CSDN通过智能技术生成

前言

最近遇到一个Jvm old过高的案例,现象是一个站点的jvm old区过高,分析原因是,原来的设计方案有问题,给前端返回的数据里面包含了大量的html代码,从存储中拿数据的过程、拼接数据的过程过于漫长了,造成了大量对象的生命周期过长,对象被 标记到了old中,造成了old区过高,监控系统进行了报警,详细原因就不做详细分析了,主要分享一下问题排查的过程。

收到了监控系统的报警,在服务器上查询jvm内存情况

jstat -gcutil pid 时间间隔,可以按时间间隔打印jvm的内存情况,例如:

jstat -gcutil 30922 1000

7e69b28825d387428b9b0e29b040b8eb.png

jvm进程30922的内存情况

大致说一下,S0,S1这些的含义:

S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

E: 年轻代中Eden(伊甸园)已使用的占当前容量百分比

O: old代已使用的占当前容量百分比

P: perm代已使用的占当前容量百分比

YGC: 从应用程序启动到采样时年轻代中gc次数

YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

FGC: 从应用程序启动

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值