如何定位java程序中占用cpu最高的线程堆栈信息

 更新时间:2022年11月11日 08:12:13   作者:寻找的路上  
这篇文章主要介绍了如何定位java程序中占用cpu最高的线程堆栈信息方法的相关资料,需要的朋友可以参考下

找出占用cpu最高的线程堆栈信息

在java编码中,有时会因为粗心导致cpu占用较高的情况,为了避免影响程序的正常运行,需要找到问题并解决。这里模拟一个cpu占用较高的场景,并尝试定位到代码行。

示例代码如下:

public class Math {

    public static final int initData = 666;
    public static User user = new User();

    public int compute() {  //一个方法对应一块栈帧内存区域
        int a = 1;
        int b = 2;
        int c = (a + b) * 10;
        return c;
    }

    public static void main(String[] args) {
        Math math = new Math();
        while (true){
            math.compute();
        }
    }
}

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

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

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

4,转为十六进制得到 0x4a14,此为线程id的十六进制表示

5,执行 jstack 18963|grep -A 10 4a14,得到线程堆栈信息中 4cd0 这个线程所在行的后面10行,从堆栈中可以发现导致cpu飙高的调用方法

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

如上图,定位到第15行代码,是由于while循环导致的。

到此这篇关于如何定位java程序中占用cpu最高的线程堆栈信息的文章就介绍到这了,更多相关定位java程序中占用cpu最高的线程堆栈信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java 中很好用的数据结构EnumSet

    Java 中很好用的数据结构EnumSet

    这篇文章主要介绍了Java 中很好用的数据结构EnumSet,EnumMap即属于一个Map,下文围绕主题展开详细内容,需要的小伙伴可以参考参考一下
    2022-05-05
  • SpringBoot + MyBatis-Plus构建树形结构的几种方式

    SpringBoot + MyBatis-Plus构建树形结构的几种方式

    在实际开发中,很多数据都是树形结构,本文主要介绍了SpringBoot + MyBatis-Plus构建树形结构的几种方式,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • SpringBoot注册Servlet的三种方法详解

    SpringBoot注册Servlet的三种方法详解

    这篇文章主要介绍了SpringBoot注册Servlet的三种方法详解,教你如何Spring Boot 注册 Servlet、Filter、Listener,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • Java实现将PDF转为PDF/A

    Java实现将PDF转为PDF/A

    通过将PDF格式转换为PDF/A格式,可保护文档布局、格式、字体、大小等不受更改,从而实现文档安全保护的目的,同时又能保证文档可读、可访问。本文将为大家介绍如何实现这一转换,需要的可以参考一下
    2022-01-01
  • Java中递归原理实例分析

    Java中递归原理实例分析

    这篇文章主要介绍了Java中递归原理,实例分析了java中递归的原理与实现方法,以及使用过程中的相关技巧,需要的朋友可以参考下
    2015-05-05
  • 2020JDK1.8安装教程详解(一次就可安装成功)

    2020JDK1.8安装教程详解(一次就可安装成功)

    这篇文章主要介绍了2020JDK1.8安装教程详解(一次就可安装成功),本文通过图文并茂的形式分步骤给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-08-08
  • Java数据类型转换实例解析

    Java数据类型转换实例解析

    这篇文章主要介绍了Java数据类型转换实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 从一道面试题看你对java的理解程度

    从一道面试题看你对java的理解程度

    这篇文章主要给大家介绍了关于如何从一道面试题看你对java的理解程度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起看看吧
    2018-09-09
  • struts2.3.24+spring4.1.6+hibernate4.3.11+mysql5.5.25开发环境搭建图文教程

    struts2.3.24+spring4.1.6+hibernate4.3.11+mysql5.5.25开发环境搭建图文

    这篇文章主要介绍了struts2.3.24+spring4.1.6+hibernate4.3.11+mysql5.5.25开发环境搭建图文教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • springboot sleuth 日志跟踪问题记录

    springboot sleuth 日志跟踪问题记录

    Spring Cloud Sleuth是一个在应用中实现日志跟踪的强有力的工具,使用Sleuth库可以应用于计划任务 、多线程服务或复杂的Web请求,尤其是在一个由多个服务组成的系统中,这篇文章主要介绍了springboot sleuth 日志跟踪,需要的朋友可以参考下
    2023-07-07

最新评论