问题查找CPU占用

CPU 占用率很高,响应很慢

 通过 top -c 动态显示进程及占用资源的排行榜,从而找到占用CPU最高的进程PID,得到的PID=18311

然后再定位到对应的线程, top - H -p 18311 查找到该进程中最消耗CPU 的线程,得到
PID=20300
通过 printf "0x%x\n" 20300命令,把对应的线程 PID 转化为16进制 0x4f4c
执行这个命令 jstack 18311 | grep -A  20  0x4f4c  查看线程 Dump 日志,其中 -A 20 表示
展示 20行,18311 表示进程ID, 0x4f4c 表示线程ID

CPU 占用率不高,但响应很慢
通过 jps 命令,查看 java 进程的 pid
通过 `jstack 查看线程日志
如果存在死锁情况, Thread Dump 日志里面肯定会给出 Found one Java-level deadlock: 信息。只要 找到这个信息就可以立马定位到问题并且去解决。

jmap 

生成堆的存储快照

打印出堆内存相关信息
jmap -heap PID  
jinfo -flag UsePSAdaptiveSurvivorSizePolicy 35352
-XX:SurvivorRatio=8
一般在开发中, JVM 参数可以加上下面两句,这样内存溢出时,会自动 dump 出该文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
设置堆内存大小 : -Xms20M -Xmx20M
启动,然后访问 localhost:9090/heap ,使得堆内存溢出
 -Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值