• jstack 分析程序性能


    摘录自:https://www.jianshu.com/p/6690f7e92f27

    简要说明下步骤:

      1:通过top命令,cpu,占用率较高的进程

      2:通过 top -Hp PID 查看该进程中线程的cpu 占用情况,查找出占用cpu占用时间比较长的线程的PID

      3:  通过 jstack PID 或者 jstack -l >xxx.stack 输出到文件 ,查看进程的堆栈状态 。

      

    注意事项:

      1:top 命令结果的查看项含义,请参照 Top命名详解

      2:jstack -Hp PID 可能会报如下错误 :

    [root@sysware-dts-point-t01 ~]# jstack -l 22056 >/sysware/22.stack
    22056: Unable to open socket file: target process not responding or HotSpot VM not loaded
    The -F option can be used when the target process is not responding

      这个可以参考博客:https://blog.csdn.net/jgwei/article/details/12079147  

      3:jstack查找出堆栈情况,如何定位到占用cpu比较高的对应线程的调用栈

        在top命令中,已经获取到了占用cpu资源较高的线程pid,将该pid转成16进制的值,在thread dump中每个线程都有一个nid,找到对应的nid即可;

        隔段时间再执行一次stack命令获取thread dump,区分两份dump是否有差别;


        

  • 相关阅读:
    leetcode-344-反转字符串
    leetcode-136-只出现一次的数字
    leetcode-350- 两个数组的交集 II
    leetcode-36-有效的数独
    leetcode-283-移动零
    leetcode-387-字符串中的第一个唯一字符
    leetcode-242-有效的字母异位词
    HDU 2612
    Codeforces 1090B
    Codeforces 1090D
  • 原文地址:https://www.cnblogs.com/wenq001/p/9444364.html
Copyright © 2020-2023  润新知