

红框中的就是堆和栈


资源消耗大,那么就要分析栈,对栈内存做dump,一个线程对应一个栈,分析消耗cpu过高的线程(runnable状态的)

具体的例子,下面是一段java程序代码,

只有一个runnable的线程 Thread1,该线程循环输出一句话,

运行该程序

该线程运行时会非常消耗cpu

通过top命令,查看cpu使用情况,


如下图所示,cpu的占用率是 us+ sv = 8.1%;
其中消耗CPU较高的进程是 13731 占用率14%

top -p 13731 单独监控该进程

输入H 输出该进程下的所有线程




得到dump结果

将线程 pid 转换为 nid 的命令



对栈进行分析时,由下往上分析,可以说明,run方法中的第26行有问题。

浙公网安备 33010602011771号