找到占用CPU最高的Java线程

一、找到java进程id

jps查看当前运行的java进程id

[root@localhost ~]# jps
18354 Jps
9381 Bootstrap

二、找到内存和CPU占用最高的线程pid

1,使用命令top -p <pid> ,显示你的java进程的内存情况,pid是你的java进程号,比如123

2,按H,获取每个线程的内存情况

3,找到内存和cpu占用最高的线程pid,比如15248

4,执行 printf 0x%x 15248 得到 0x3b90 ,此为线程id的十六进制

# 查看java进程
top -p 9381
# 按H显示每个线程的内存
# 按M根据驻留内存大小进行排序
# 按P根据CPU使用百分比大小进行排序

# 打印线程ID的十六进制表示
printf 0x%x 9382
0x24a6
image.png

按H显示每个线程的内存

image.png

三、查看堆栈信息

5,执行 jstack 123|grep -A 10 3b90,得到线程堆栈信息中3b90这个线程所在行的后面10行

jstack 9381 | grep -A 10 24a6

6,查看对应的堆栈信息找出可能存在问题的代码

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,165评论 0 23
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 广州恒大vs鹿岛鹿角 ●比赛开始前—— “又是让人讨厌的城彰二解说。” “卡纳瓦罗主教练啊。” “会是虐杀秀的。”...
    耕心鲜阅读 2,273评论 1 4
  • 苏宁易购818发烧购物节打得火热,苹果、三星、华为、小米、荣耀、oppo等众多手机一线品牌纷纷加入818消费狂欢。...
    苏博士侃机阅读 342评论 0 0
  • “我发现你的手表里藏有彩虹耶” “但却出现在了错误的时间里,好可惜” 这是旧梦里的一个场景。 可能因昨夜洗漱时懒得...
    抓猫儿阅读 467评论 0 0