当前位置: 首页 > news >正文

jvm的调优命令jstack打印堆栈信息阐述以及调优

一 jstack命令

1.1 堆栈信息解释

"logback-16" #10383 daemon prio=5 os_prio=0 cpu=0.16ms elapsed=64877.58s tid=0x00007fce00003680 nid=0x5946 waiting on condition [0x00007fcacda7c000] 这些参数的含义

解释说明:

1)"logback-16": 线程名称:自定义的线程标识符,通常由线程创建者指定。logback表示该线程属于Logback日志框架,-16是线程编号。

2)#10383: JVM内部线程ID:Java虚拟机分配的线程唯一标识符(十进制),不同于操作系统的线程ID。

3)daemon:线程类型:表示这是一个守护线程。当所有非守护线程退出时,JVM会自动终止守护线程。

4)prio=5:Java线程优先级:范围1-10(5=默认优先级),仅作为JVM调度参考,实际依赖操作系统调度。

5)os_prio=0:操作系统级优先级:映射到操作系统的调度优先级(Linux中0-139,0为最高)。此处0表示较高优先级。

6)cpu=0.16ms:CPU占用时间:该线程累计消耗的CPU时间(0.16毫秒),极低值表明线程基本处于阻塞状态。

7)elapsed=64877.58s: 线程存活时间:自线程启动后经过的挂钟时间(约18小时1分钟)。

8)tid=0x00007fce00003680: Java线程地址:线程在JVM内存中的十六进制地址,用于内部引用。

9)nid=0x5946: 原生线程ID(OS级):操作系统的真实线程ID(十六进制)。

      转换为十进制:0x5946 = 22854

      可通过Linux命令查看:top -H -p <PID> 或 ps -eLf | grep 22854

10)waiting on condition: 线程状态:线程在等待某个条件触发,常见场景:

   等待I/O操作(网络/磁盘)

   休眠状态(Thread.sleep())

  等待锁释放(如synchronized或Lock)

  等待任务(线程池中的空闲线程)

11)[0x00007fcacda7c000] :线程栈起始地址:该线程栈在内存中的起始位置(十六进制地址)。
 

1.2 查堆栈信息 诊断cpu100%

# 1. 找到高 CPU Java 进程 PID=12345
top

# 2. 查看该进程内线程 CPU 排名
top -H -p 12345  # 发现线程 22854 占 99%

# 3. 转换 PID 为十六进制
printf "%x" 22854  # 输出 5946 → nid=0x5946

# 4. 抓取线程堆栈
jstack 12345 > dump.log

# 5. 搜索 nid=0x5946
grep -C 20 "nid=0x5946" dump.log

或者在线查看

jstack -l  12345 |grep  -C 20 ‘0x5946’

1.3 查看线程堆栈信息

1.使用命令 jstack 1|grep  -C 20 '0x6bb8'

2.使用命令 jstack 1|grep  -A 20 '0x6bb8' 

其中:A:After ;B:  before ; C: center

1.4 查看指定jvm内部线程堆栈

设置一定间隔,多次执行此命令,对别这个线程下,堆栈信息的变化。

http://www.lryc.cn/news/577242.html

相关文章:

  • 04_Americanas精益管理项目_数仓搭建
  • VMware vSphere 9与ESXi 9正式发布:云原生与AI驱动的虚拟化平台革新
  • QT控件 使用Font Awesome开源图标库修改QWidget和QML两种界面框架的控件图标
  • Maven 中,dependencies 和 dependencyManagement
  • 基于C++实现 bp 神经网络的手写数字识别
  • 【LeetCode 热题 100】239. 滑动窗口最大值——(解法一)滑动窗口+暴力解
  • 从0开始学习计算机视觉--Day06--反向传播算法
  • 【FR801xH】富芮坤FR801xH之PMU GPIO
  • Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第三篇: 打造光影字形的创意秘技-文字与自然共舞
  • [面试] js手写题-树转数组
  • 文心大模型 4.5 系列开源首发:技术深度解析与应用指南
  • uni-app使用uview2自定义tabber
  • PHP 全面解析:从入门到实践的服务器端脚本语言
  • 计算机网络中那些常见的路径搜索算法(一)——DFS、BFS、Dijkstra
  • Qt Quick 与 QML(四)qml中的Delegate系列委托组件
  • Python I/O 库 包 iopath
  • ExGeo代码理解(七)main.py(运行模型进行训练和测试)
  • 生成式人工智能实战 | 变分自编码器(Variational Auto-Encoder, VAE)
  • 如何让Excel自动帮我们算加减乘除?
  • PHP语法基础篇(七):函数
  • 电脑开机加速工具,优化启动项管理
  • 深入比较 Gin 与 Beego:Go Web 框架的两大选择
  • 深度学习04 卷积神经网络CNN
  • 国科大深度学习作业2-基于 ViT 的 CIFAR10 图像分类
  • 工业级PHP任务管理系统开发:模块化设计与性能调优实践
  • DBeaver 设置阿里云中央仓库地址的操作步骤
  • 提示技术系列——链式提示
  • 数据结构入门-图的基本概念与存储结构
  • 【软考高项论文】论信息系统项目的干系人管理
  • 利用不坑盒子的Copilot,快速排值班表