首页 > 其他分享 >Arthas thread(查看当前JVM的线程堆栈信息)

Arthas thread(查看当前JVM的线程堆栈信息)

时间:2024-09-24 12:23:08浏览次数:10  
标签:thread 查看 命令 线程 JVM 堆栈


Arthas thread(查看当前JVM的线程堆栈信息)_thread


文章目录

  • 二、命令列表
  • 2.1 jvm相关命令
  • 2.1.2 thread(查看当前JVM的线程堆栈信息)
  • 举例1:展示[数字]线程的运行堆栈,命令:thread 线程ID
  • 举例2:找出当前阻塞其他线程的线程


二、命令列表

2.1 jvm相关命令

2.1.2 thread(查看当前JVM的线程堆栈信息)

使用场景
Arthas 中,thread 命令用于查看和分析 JVM 中的线程信息。这个命令提供了关于线程的详细视图,有助于诊断线程相关的问题。以下是 thread 命令的主要使用场景:

  1. 性能问题分析
  • 长时间运行的线程:通过查看线程的状态和运行时间,你可以识别出可能导致性能瓶颈的长时间运行线程。
  • 死锁检测:可以使用 thread 命令检查是否存在线程死锁的情况,并获得有关死锁的详细信息。
  1. 调试线程问题
  • 线程状态:查看线程的状态(如 RUNNABLE、WAITING、BLOCKED 等),帮助理解线程的当前行为和潜在问题。
  • 线程堆栈跟踪:获取线程的堆栈跟踪,分析线程在执行时的调用链,以便识别代码中的问题。
  1. 资源使用监控
  • 线程数:监控 JVM 中的线程总数,确保线程数在合理范围内,防止因线程过多导致的资源耗尽。
  • 线程分布:查看不同线程的数量和状态,评估线程池的使用情况和线程资源的分配。

参数说明:

参数名称

说明

示例

数字

示[数字]线程的运行堆栈

thread 3

[n:]

指定最忙的前N个线程并打印堆栈

threaad -n 3

[b]

找出当前阻塞其他线程的线程

thread -b

[i ]

指定cpu占比统计的采样间隔,单位为毫秒

thread -i 1000 -n 3


当没有参数时,显示所有线程的信息

thread

–state

查看处于线程状态

thread --state WAITING

举例1:展示[数字]线程的运行堆栈,命令:thread 线程ID

基础语法
thread 线程ID

Arthas thread(查看当前JVM的线程堆栈信息)_Arthas_02


你看到的输出确实是 Arthas 的 thread 命令的查询结果,实际上它展示了线程的运行堆栈信息,这些信息可以帮助你分析线程的状态和性能瓶颈。以下是你提供的输出的解释:

  • pool-31-thread-43:这是线程的名称。
  • Id=226:这是线程的ID
  • TIMED_WAITING:线程在 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@da1bfc6 上等待某些条件。它通常用于调度任务或线程池中的任务等待执行。
  • Affect(row-cnt:0) cost in 2 ms.:表示查询本身的消耗时间为2毫秒,没有影响到数据库中的行计数。这部分通常表明命令执行的性能影响情况。

如果你看到的线程信息符合预期,但没有显示额外的异常或错误信息,那说明你成功地查询了线程的状态。这些信息对于诊断和分析线程的行为很有帮助。如果你在分析过程中遇到其他问题,可以提供更多细节,以便更好地协助你。

举例2:找出当前阻塞其他线程的线程

基础语法
thread -b

[arthas@18139]$ thread -b
No most blocking thread found!
Affect(row-cnt:0) cost in 178 ms.
[arthas@18139]$


标签:thread,查看,命令,线程,JVM,堆栈
From: https://blog.51cto.com/u_15896157/12098419

相关文章

  • 万象更新 Html5 - h5: h5 通过 web worker 实现多线程
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-h5:h5通过webworker实现多线程示例如下:h5\webWorker\worker.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>通过web......
  • 万象更新 Html5 - h5: h5 通过 web worker 实现多线程(演示如何转移数据的所有权)
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-h5:h5通过webworker实现多线程(演示如何转移数据的所有权)示例如下:h5\webWorker\worker_transferable.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"&......
  • 线程关闭方式
    1需要线程退出的常见场景2优雅关闭or强行关闭3其他语言和Java语言退出线程的方式4优雅退出线程5总结JDK在线程的Stop方法时明确不得强行销毁一个线程,要优雅的退出线程。何谓优雅退出线程,即业务将进行中请求正确被处理,取消待执行请求,执行资源回收,最终ThreadRunableru......
  • ARS展览项目(七)——C++多线程:Socket+表情识别整合
    说明一下我这边做表情识别和Socket,表情识别要实时,Socket要一直监听表情识别的结果,那么就只好用C++多线程来解决这个“两个功能一直并且同时运行”的问题。否则,如果是单线程的话,只能运行表情识别一段时间,切换发送一段时间,又切换回来,这样没有多线程好。还要说解决的难点写成多......
  • ARS展览项目(七)——C-多线程:Socket-表情识别整合
    说明一下我这边做表情识别和Socket,表情识别要实时,Socket要一直监听表情识别的结果,那么就只好用C++多线程来解决这个“两个功能一直并且同时运行”的问题。否则,如果是单线程的话,只能运行表情识别一段时间,切换发送一段时间,又切换回来,这样没有多线程好。还要说解决的难点写成多......
  • 28. 多线程、互斥锁
    1.多线程理论1.1什么是线程(1)概念在操作系统中,每个进程都有一个内存空间地址。而且默认每个进程都有一个控制线程,即自带一个主线程。进程是用来把资源集中到一起(进程是一个资源单位,或者称资源集合),线程是CPU上的执行单位。多线程(即多个控制线程)的概念:一个进程中存在多个控制......
  • 多线程之手撕生产者-消费者
    要点维护一个资源(在生产者-消费者中即流水线的位置)池,实现put()/get()两个函数。由于对信号量的操作是互斥的,要引入条件变量和信号量。实现资源池类Pool,成员变量:mtx:mutexcv:condition_variableque:queuecapacity:int实现资源池类Pool,成员函数:Tget():获取......
  • JAVA多线程
    一、并发和并行    并发:同一时刻,多个指令在单个CPU上交替执行。    并行:同一时刻,多个指令在多个CPU上同时执行。二、多线程的实现方式1.继承Thread类的方式进行实现。publicclassThreadDemo{publicstaticvoidmain(String[]args){MyT......
  • 线程同步:锁,条件变量,并发
    1)锁mutex2)条件变量头文件<condiction_variable>condition_variablecv;cv.wait(_lock,谓语)//使用谓语检查是否满足唤醒条件,防止假唤醒usingnamespacestd; mutex_mutex; condition_variablecv; //condition_variablecv2; intnum=1; threadth1([&](){ int......
  • 多线程问题:异常处理,单例
    1)多线程异常处理多线程中如何捕获抛出异常到主线程a)catch中使用std::current_exception();获得正在处理的异常b)通过引用类型std::exception_ptr&_ex_ptr传出c)std::rethrow_exception(ex_ptr);重新抛出异常usingnamespacestd; try{ std::exception_ptrex_ptr;......