美文网首页
找到占用CPU最高的Java线程

找到占用CPU最高的Java线程

作者: output | 来源:发表于2018-03-20 21:45 被阅读18次

    一、找到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

    相关文章

      网友评论

          本文标题:找到占用CPU最高的Java线程

          本文链接:https://www.haomeiwen.com/subject/wmjiqftx.html