java程序CPU内存堆栈分析

2 篇文章 1 订阅

CPU占用

1、找出进程 pid
  • 方法1:ps命令
ps -aux|head -1;ps -aux |grep java |sort -rh -k 3 |head

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      6642  545 30.9 19770660 10192192 ?   Sl   09:33 1353:50 /opt/jre/bin/java

>> 找到进程为 6642
  • 方法2:top命令
top -c
2、找出线程 tid
  • 方法1:ps命令
ps -mp 6642 -o THREAD,tid,time,cpu  |sort -rh -k 2 >> 6642.cpu
  • 方法2:top命令
top -Hp 6642
3、通过高CPU的线程信息
  • 保存线程栈信息
jstack 6642 > thread_stack.log
  • 线程tid转换为16进制
> 10进制转16进制

printf "%x\n" 22276
5704
  • 在已保存的thread_stack.log中搜索 5704

内存占用

> 参考文档
http://t.csdn.cn/sN8kh
1、找出线程
  • 方法1:ps命令
ps -aux |head -1;ps -aux |grep java |sort -rh -k 4 |head

已6321为例
  • 方法2:top命令
根据内存情况进行排序
输入 M
2、生成dump文件
jmap -dump:live,format=b,file=6321.hprof 6321
3、分析dump文件
  • 方法1:通过如下网站打开分析
https://heaphero.io/
  • 方法2:jhap
参考网站
http://t.csdn.cn/53Vus
> jhat 默认启动一个7000端口
jhat m.hprof
在浏览器中打开:IP:7000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值