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

@[toc]
二、命令列表
2.1 jvm 相关命令
2.1.2 thread(查看当前 JVM 的线程堆栈信息)
使用场景
:在 Arthas 中,thread
命令用于查看和分析 JVM 中的线程信息。这个命令提供了关于线程的详细视图,有助于诊断线程相关的问题。以下是thread
命令的主要使用场景:
性能问题分析:
长时间运行的线程:通过查看线程的状态和运行时间,你可以识别出可能导致性能瓶颈的长时间运行线程。
死锁检测:可以使用
thread
命令检查是否存在线程死锁的情况,并获得有关死锁的详细信息。调试线程问题:
线程状态:查看线程的状态(如 RUNNABLE、WAITING、BLOCKED 等),帮助理解线程的当前行为和潜在问题。
线程堆栈跟踪:获取线程的堆栈跟踪,分析线程在执行时的调用链,以便识别代码中的问题。
资源使用监控:
线程数:监控 JVM 中的线程总数,确保线程数在合理范围内,防止因线程过多导致的资源耗尽。
线程分布:查看不同线程的数量和状态,评估线程池的使用情况和线程资源的分配。
参数说明:
举例 1:展示[数字]线程的运行堆栈,命令:thread 线程 ID
基础语法
:thread 线程 ID

你看到的输出确实是 Arthas 的 thread 命令的查询结果,实际上它展示了线程的运行堆栈信息,这些信息可以帮助你分析线程的状态和性能瓶颈。以下是你提供的输出的解释:
pool-31-thread-43
:这是线程的名称。Id=226
:这是线程的 IDTIMED_WAITING
:线程在 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@da1bfc6 上等待某些条件。它通常用于调度任务或线程池中的任务等待执行。Affect(row-cnt:0) cost in 2 ms.
:表示查询本身的消耗时间为 2 毫秒,没有影响到数据库中的行计数。这部分通常表明命令执行的性能影响情况。
如果你看到的线程信息符合预期,但没有显示额外的异常或错误信息,那说明你成功地查询了线程的状态。
这些信息对于诊断和分析线程的行为很有帮助。如果你在分析过程中遇到其他问题,可以提供更多细节,以便更好地协助你。
举例 2:找出当前阻塞其他线程的线程
基础语法
:thread -b
本人其他相关文章链接
1.Arthas 全攻略:让调试变得简单2.Arthas dashboard(当前系统的实时数据面板)3.Arthas thread(查看当前JVM的线程堆栈信息)4.Arthas jvm(查看当前JVM的信息)5.Arthas sysprop(查看和修改JVM的系统属性)6.Arthas sysenv(查看JVM的环境变量)7.Arthas vmoption(查看和修改 JVM里诊断相关的option)8.Arthas getstatic(查看类的静态属性 )9.Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)10.Arthas logger(查看 logger 信息,更新 logger level)11.Arthas mbean(查看 Mbean 的信息)12.Arthas memory(查看 JVM 内存信息)13.Arthas ognl(执行ognl表达式)14.Arthas perfcounter(查看当前 JVM 的 Perf Counter 信息)15.Arthas vmtool(从 jvm 里查询对象,执行 forceGc)16.Arthas jad(字节码文件反编译成源代码 )17.Arthas mc(Memory Compiler/内存编译器 )18.Arthas redefine(加载外部的.class文件,redefine到JVM里 )19.Arthas classloader (查看 classloader 的继承树,urls,类加载信息)20.Arthas sc(查看JVM已加载的类信息 )21.Arthas sm(查看已加载类的方法信息 )22.Arthas monitor(方法执行监控)23.Arthas stack (输出当前方法被调用的调用路径)24.Arthas trace (方法内部调用路径,并输出方法路径上的每个节点上耗时)25.Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)26.Arthas watch (方法执行数据观测)27.Arthas profiler(使用async-profiler对应用采样,生成火焰图)
评论