Jstack 查看线程状态及定位占用 cpu 较高的 java 线程

简介: Jstack 查看线程状态及定位占用 cpu 较高的 java 线程

本文为博主原创,未经允许不得转载:

  1. Jstack 用来查看 java 指定进程所包含的 java 线程状态:

    

 

         

 

   "arthas-NettyHttpTelnetBootstrap-3-3" 线程名

  prio=5 优先级=5

  tid=0x00007f6a60019000 线程id

  nid=0x1f4b 线程对应的本地线程标识nid

  java.lang.Thread.State: RUNNABLE 线程状态

 

2.使用 Jstack 定位最消耗 cpu 的线程

  2.1 使用命令top -p <pid> ,显示你的java进程的内存情况,pid是java进程号,

     

 

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

  

 

 2.3 找到内存和cpu占用最高的线程tid :19113,并使用 printf  "%x\n" 转为16进制

 

 

 

 2.4 使用 jstack 查看该进程对应线程执行的堆栈信息

 

  

  2.5 根据堆栈信息定位消耗 cpu 的原因

 

 

 

 

标签: JVM


目录
相关文章
|
1月前
线程CPU异常定位分析
【10月更文挑战第3天】 开发过程中会出现一些CPU异常升高的问题,想要定位到具体的位置就需要一系列的分析,记录一些分析手段。
61 0
|
3月前
|
Java Maven 容器
java依赖冲突解决问题之ClassNotFoundException定位确认异常如何解决
java依赖冲突解决问题之ClassNotFoundException定位确认异常如何解决
|
20天前
|
Prometheus 监控 Cloud Native
JAVA线程池监控以及动态调整线程池
【10月更文挑战第22天】在 Java 中,线程池的监控和动态调整是非常重要的,它可以帮助我们更好地管理系统资源,提高应用的性能和稳定性。
55 4
|
1月前
|
Java
Java面试题之cpu占用率100%,进行定位和解决
这篇文章介绍了如何定位和解决Java服务中CPU占用率过高的问题,包括使用top命令找到高CPU占用的进程和线程,以及使用jstack工具获取堆栈信息来确定问题代码位置的步骤。
92 0
Java面试题之cpu占用率100%,进行定位和解决
|
1月前
|
存储 Java
深入理解java对象的访问定位
这篇文章深入探讨了Java对象的访问定位机制,比较了使用句柄和直接指针两种主流的对象访问方式,并指出了它们各自的优势,例如句柄访问在对象移动时的稳定性和直接指针访问的速度优势。
33 0
深入理解java对象的访问定位
|
3月前
|
小程序 JavaScript Java
【Java】服务CPU占用率100%,教你用jstack排查定位
本文详细讲解如何使用jstack排查定位CPU高占用问题。首先介绍jstack的基本概念:它是诊断Java应用程序线程问题的工具,能生成线程堆栈快照,帮助找出程序中的瓶颈。接着,文章通过具体步骤演示如何使用`top`命令找到高CPU占用的Java进程及线程,再结合`jstack`命令获取堆栈信息并进行分析,最终定位问题代码。
291 1
【Java】服务CPU占用率100%,教你用jstack排查定位
|
3月前
|
监控 安全 Java
Java多线程调试技巧:如何定位和解决线程安全问题
Java多线程调试技巧:如何定位和解决线程安全问题
130 2
|
3月前
|
缓存 网络协议 API
【APIM】Azure APIM抛出 java.lang.RuntimeException 错误定位
【APIM】Azure APIM抛出 java.lang.RuntimeException 错误定位
|
3月前
|
缓存 NoSQL Java
【Azure Redis 缓存】定位Java Spring Boot 使用 Jedis 或 Lettuce 无法连接到 Redis的网络连通性步骤
【Azure Redis 缓存】定位Java Spring Boot 使用 Jedis 或 Lettuce 无法连接到 Redis的网络连通性步骤
|
1月前
|
存储 消息中间件 资源调度
C++ 多线程之初识多线程
这篇文章介绍了C++多线程的基本概念,包括进程和线程的定义、并发的实现方式,以及如何在C++中创建和管理线程,包括使用`std::thread`库、线程的join和detach方法,并通过示例代码展示了如何创建和使用多线程。
41 1
C++ 多线程之初识多线程