下面是详细步骤:1. 首先确定进程的 ID ,可以使用 jps -v 或者 top 命令直接查看2. 查看该进程中哪个线程占用大量 CPU,执行 top -H -p [PID] 结果如下:可以发现编号为 350xx 的共有 9 个线程占用了 100% 的 CPU,好,接下来咱们随便取一个线程 ID ,假设我们想看编号为 35053 这个线程。首先将 35053 转成 16 进制是 88ED (可以用开源中国在线工具转换)3. 接下来我们将进程中的所有线程输出到一个文件中,执行:jstack [PID] > jstack.txt4. 在进程中查找对应的线程 ID,执行:cat jstack.txt | grep -i 88ED结果是:"HTTP Request From : /xxxx/blog/323432(120.27.143.239)" #266 daemon prio=5 os_prio=0 tid=0x00007fcda4146800 nid=0x88e
  进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1、计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2、假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。3、进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。4、一个车间里,可以有很多工人。他们协同完成一个任务。5、线程就好比车间里的工人。一个进程可以包括多个线程。6、车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。7、可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一个线程使用某些共享内存时,其他线程必须等
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981