首页 > 编程语言 >实战-JAVA应用程序CPU占用率飙升,定位线程的堆栈信息

实战-JAVA应用程序CPU占用率飙升,定位线程的堆栈信息

时间:2023-04-07 17:22:17浏览次数:41  
标签:十六进制 JAVA 10 top 线程 堆栈 占用率 CPU

分以下几个步奏:

(1)使用命令top -p <pid> ,显示你的java进程的cpu情况,pid是你的java进程号,比如14203。(使用jps可以获取到java的进程id 或者top直接查看)

(2)按H,获取每个线程的CPU情况。(shirt+H)

(3)找到内存和cpu占用最高的线程tid,比如14204。

(4)转为十六进制得到 377C ,此为线程id的十六进制表示。

(5)执行 jstack <pid>| grep -A 10 <thread 0x16 id>,得到线程堆栈信息中1371这个线程所在行的后面10行。(注意:如果十六进制由字母的要小写) # Jstack 14203 | grep -A 10 377c

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

 

总之:通过top找到线程id, 通过jstack找到线程的堆栈信息。

 

使用top找到cpu飙高的java进程ID:

 

 使用top -p <pid>显示进程情况

 

 按shirt+H查看线程的CPU情况

 

 注意:这里的PID实际对应的是线程的十进制的tid,线程十进制转换为十六进制  14204(十进制) = 377C(十六进制)

 

执行 jstack <pid>| grep -A 10 <thread 0x16 id>,得到线程堆栈信息:

#jstack 14203 |  grep -A 10 377c

 

 查看对应的堆栈信息,排查源代码并解决问题:

 

标签:十六进制,JAVA,10,top,线程,堆栈,占用率,CPU
From: https://www.cnblogs.com/lys_013/p/17296847.html

相关文章

  • 什么是 Java 字节码?采用字节码的好处是什么?
    在Java中,JVM可以理解的代码就叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以,Java程序运行时相对来说还是高效的(不过,和C++......
  • Java 判断是否是数字 正则表达式
    privatestaticbooleanisInteger(Stringstr){//可以包含小数Patternpattern=Pattern.compile("^[0-9]+(.[0-9]+)?$");//只包含两位小数Patternpattern=Pattern.compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$");......
  • javascript把本地sql数据库表转换为对象
    在做项目的时候,需要读取本地数据库,并且在页面上显示出来,原始数据读取出来的原始数据如下:varr=sqliteDB.exec(document.getElementById('txtSQL').value); console.info(r);  使用系统的转换方式console.log('Hereisarow:'+JSON.stringify(r));  可以看到其......
  • 【Java 并发】【九】【AQS】【七】Semaphore信号量底层机制原理
    1 前言接下来我们来看看Semaphore,也是基于之前讲解的AQS来实现的,建立在AQS体系之上的一个并发工具类。2  Semaphore是什么Semaphore,它是一个信号量,主要作用是用来控制并发中同一个时刻执行的线程数量,可以用来做限流器,或者流程控制器。在创建的时候会指定好它有多少个信号量......
  • 线程池execute 和 submit 的区别
    1.execute和submit的区别前面说了还需要介绍多线程中使用execute和submit的区别(这两个方法都是线程池ThreadPoolExecutor的方法)。1.1方法来源不同execute方法是线程池的顶层接口Executor定义的,在ThreadPoolExecutor中实现:voidexecute(Runnablecommand);su......
  • xhEditor粘贴图片自动上传到服务器(Java版)
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action名称 */    "wordFieldName":"upfile",/* 提交的......
  • 你不会还不知道JavaScript常用的8大设计模式?
    JavaScript常用的8大设计模式有工厂模式:工厂模式是一种创建对象的模式,可以通过一个共同的接口创建不同类型的对象,隐藏了对象的创建过程。单例模式:单例模式是一种只允许实例化一次的对象模式,可以通过一个全局访问点来访问它。建造者模式:建造者模式是一种创建复杂对象的模式,通......
  • dedecms粘贴图片自动上传到服务器(Java版)
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。加入下面的代码://判断剪贴......
  • java基础——静态代理和动态代理
    java代理模式有静态代理和动态代理两种实现方式一、静态代理代理模式可以在不修改被代理对象的基础上,通过扩展代理类,进行一些功能的附加与增强。代理类和被代理类应该共同实现一个接口,或者是共同继承某个类。优点:可以在不修改目标对象的前提下扩展目标对象的功能......
  • JUC并发编程基础篇第二章之CompletableFuture[加强版的线程]
    @目录1、创建线程的几种方式2、Future的优缺点3、CompletableFuture对Future的改进3.1、CompletableFuture的基本结构3.2、创建CompletableFuture四种方式3.3、CompletableFuture的流式调用3.4、CompletableFuture常见的用法1、创建线程的几种方式newthread://构造......