Java程序线上问题 解决Linux下的CUP飙升、内存溢出以及GC不健康

解决Linux下的CUP飙升、内存溢出以及GC不健康

一、Linux下的CUP飙升、内存溢出问题

-- 先执行top命令 查询cup使用情况 然后按Shift + m 进行一个倒序排序 查询出使用最高的pid
top 
-- 然后执行 top -Hp pid 命令查询出该进程下的线程信息,查询出使用最高的线程id
top -Hp pid
-- 把 线程id 转换成 16进制
printf "%x\n" id 
-- 方法一 通过 jstack(JDK自带的命令) 打印相关的信息
jstack pid | grep -A 10 id // grep 命令后面的信息相当于查询条件 -A 报错后面的 10 行信息
-- 方法二 
jstack -l pid > out.txt // 导出所有的信息然后根据 线程id 去查找对应的信息

二、GC不健康问题

1、gc 堆内存信息分析
-- jstat 命令
jstat -gc pid 1000 // 每隔 一秒钟打印一次GC 使用信息

-- jmap -heap 命令
jmap -heap pid  或者 jmap -heap pid > out.text(打印文件输出); 
// 堆内存使用情况 能 看到堆内存分配的空间 以及使用 情况

-- jmap -histo 命令
jmap -histo pid 或者 jmap -histo pid > out.txt;
// 打印或导出堆内存中对象的数量及大小

-- jmap -dump:file=c:dump.txt pid命令
jmap -dump:file=c:dump.txt pid 
// 输出以dump文件格式  然后通过特定的工具分析dump文件信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值