linux进程性能查看命令

一、linux下查找java进程占用cpu过高原因

1.查看进程
top命令查看进程占用资源情况

2.查找线程
top -H -p <pid>查看线程占用情况
ps -mp pid(进程id) -o THREAD,tid,time 查看线程列表

3.查找java的堆栈信息
将线程id转换成十六进制
printf "%x\n" 15664

4.使用jstack查询线程堆栈信息
jstack <pid> | grep -A 20 线程id(十六进制)   定位到线程ID的后20行

5.分析原因和修改代码

二、线上服务内存OOM问题定位

jmap -heap 10765   
#查看进程新生代、老年代堆内存的分配大小以及使用情况,看是否本身分配过小。

jmap -histo:live 10765 | more   
#找到最消耗内存的对象。

jmap -dump:live,format=b,file=dump.hprof 进程id 
#jmap命令dump出堆里的对象文件,使用jprofiler、visalVM、eclipse mat分析内存对象情况。

三、full gc问题排查

老年代空间不足
永生代或者元数据空间不足
System.gc()方法调用
CMS GC时出现promotion failed和concurrent mode failure
YoungGC时晋升老年代的内存平均值大于老年代剩余空间
有连续的大对象需要分配

jstat -gcutil 9596 250 12
#进程9596每隔250ms打印一次,打印12次。

jstat -gccause pid
#查看gc详细原因

jmap -histo 进程id > jmap.txt
#dump文件分析,找到占用内存的对象,定位到具体code。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值