美文网首页Java
利用Jstack分析死循环、CPU占用高的问题

利用Jstack分析死循环、CPU占用高的问题

作者: SimpleEasy | 来源:发表于2019-06-23 20:50 被阅读0次

1,利用top命令,查看占用CPU资源最高的进程,注意是进程

如下:top

获取进程号

2,根据进程号获取占用资源最高的线程号

top -Hp pid

其中-H表示线程模式,-p表示pid监控,pid为进程号。

获取线程号

3,将十进制的线程号转化为16进制

利用printf命令将10进制转化为16进制

printf %x 4816

结果:12d0

4,查找问题代码位置

jstack 4806|grep 12d0

结果如下:

"test thread" #8 prio=5 os_prio=0 tid=0x00007f280819e000 nid=0x12d0 runnable [0x00007f280d9a4000]

也可以具体打印出jstack查找代码位置,如下所示:

"test thread" #8 prio=5 os_prio=0 tid=0x00007f280819e000 nid=0x12d0 runnable

.............................................................................

at com.sparker.SimpleApp.lambda$main$0(SimpleApp.java:31)

        at com.sparker.SimpleApp$$Lambda$1/250421012.run(Unknown Source)

        at java.lang.Thread.run(Thread.java:748)

5,查看源码,对应System.out.println("running");部分即为占用cpu资源的地方。

        Thread thread = new Thread(() -> {

            while (true) {

                System.out.println("running");

            }

        });

        thread.setName("test thread");

thread.start();

相关文章

  • 利用Jstack分析死循环、CPU占用高的问题

    1,利用top命令,查看占用CPU资源最高的进程,注意是进程 如下:top 2,根据进程号获取占用资源最高的线程号...

  • 3步定位cpu占比过高或者oom

    jstack检测cpu高步骤一:查看cpu占用高进程 步骤二:查看cpu占用高线程 步骤三:转换线程ID 步骤四:...

  • Linux中找出Java程序占用大量CPU的元凶

    原理 通过top找到占用CPU高的进程pid,通过ps找到该进程中占用CPU高的线程tid,最后通过jstack找...

  • jstack

    top查看占用cpu较高的进程 1、查看jstack信息 jstack pid jstack 166176 2、查...

  • jvm调优

    jvm命令操作 jmap操作 //原始jstack定位问题 找出cpu中占用内存最高的代码

  • jstack实战死循环与死锁

    jstack可以打印jvm内所有的线程,利用jstack可以排除程序运行时出现的死循环或者死锁问题。 1、实战死循...

  • top 和 jstack 分析高 CPU 问题

    通常我们所说的 CPU 使用率过高,这里面其实隐含着一个用来比较高与低的基准值,比如 JVM 在峰值负载下的平均 ...

  • Android CPU占用高问题分析

     最近负责的项目中,有一定制客户频繁的抱怨设备在安装一些客户的app组件后,云端采集到的CPU占用率信息一直维持在...

  • 使用arthas定位耗时CPU的线程

    在分析CPU占用率很高的线程以及问题定位时,一般都是使用top和jstack命令,但是整个过程比较慢,确实使用ar...

  • jvm jstack分析线程状态及类加载机制

    jstack分析线程状态 如何查看cpu中占用率较高的线程并分析原因 在linux终端,执行top,它默认是按照使...

网友评论

    本文标题:利用Jstack分析死循环、CPU占用高的问题

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