定位java线程_(一)利用jstack定位Java线程堆栈信息

一、概述

JDK本身提供了许多方便的性能调优及监控的小工具,这些小工具虽然没有说是官方的标准工具,但自从Java诞生这么多年,这些工具一直在被人使用,不得不说这是JDK给开发者的福利,这些工具包含但不仅限于:jstack、jps、jmap、jConsole、jstat等等。

由于前些时候用到了jstack这个工具,所以今天来简单总结下jstack的使用。

二、jstack使用

首先,jstack会生成JVM当前时刻的线程快照,然后我们可以通过它查看某个Java进程内的线程堆栈信息,通常来说,当线上CPU使用率较高的时候,我们可以通过jstack查询占用CPU较高的一些线程的使用情况,比如发生了死锁,线程阻塞等相关操作。一般情况下,jstack会配合其他命令一块进行操作,比如top,ps等命令。我们先来看下使用jstack命令的一些步骤。

1. 查询占用CPU最高的进程

首先,我们通过top命令查询当前CPU的使用情况,top命令前面已详细说过,这里不多说,直接输入命令:top

31fdb60957bc

这里我们可以看到各个进程对CPU的使用占比,并且可以根据top相关命令进行排序。

2. 查询该进程下占用CPU最高的线程

接下来我们可以根据进程id查询该进程下占用CPU比较高的线程,输入命令:top -Hp PID,其中PID是上面的那个进程id,比如我们这个的:top -Hp 12386:

31fdb60957bc

如果对PS命令比较熟的,还可以直接通过:ps H -eo pid,tid,pcpu | sort -n -k 3 | tail -10 来定位到相关线程:

31fdb60957bc

如果想看下线程的详细信息,还可以通过:cat /proc/进程号/task/线程号/status来查看。如果需要查询该进程下所有的线程,我们还可以通过pstree命令,以树的形

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值