0

0

如何使用jcmd命令分析并发应用_JVM线程状态与实时运行数据查看

P粉602998670

P粉602998670

发布时间:2026-02-22 19:16:03

|

448人浏览过

|

来源于php中文网

原创

查线程状态必须用jcmd thread.print,它输出线程名、状态、锁信息等,比jstack轻量且无需attach权限;虚拟线程需加-all参数。

如何使用jcmd命令分析并发应用_jvm线程状态与实时运行数据查看

查线程状态:用 jcmd <pid> VM.native_memory</pid> 不行,得用 jcmd <pid> Thread.print</pid>

很多人一上来就试 jcmd <pid> VM.native_memory</pid>,以为能看线程,结果只看到堆外内存——这根本不是线程状态。真正要看 JVM 里每个线程在干啥、卡在哪、是不是 WAITING 或 BLOCKED,必须用 Thread.print

它输出和 jstack <pid></pid> 类似,但更轻量,不依赖外部工具,且是 JDK 7u40+ 原生支持的命令。

  • jcmd 不需要额外 attach 权限(不像 jstack 在某些容器里常被拒)
  • 输出里会标出线程名、java.lang.Thread.State、锁持有/等待对象、是否为 daemon 线程
  • 注意:如果应用用了虚拟线程(JDK 21+),Thread.print 默认不显示它们;要加 -all 参数才显示全部 Loom 线程

定位高 CPU 线程:先 jcmd <pid> VM.native_memory summary</pid> 再结合 top -H -p <pid></pid>

jcmd <pid> VM.native_memory</pid> 本身不提供线程级 CPU 消耗,它只告诉你 native 内存分布。真要揪出哪个 Java 线程吃 CPU,得靠 OS 层配合。

标准做法是两步走:

Perplexity
Perplexity

Perplexity是一个ChatGPT和谷歌结合的超级工具,可以让你在浏览互联网时提出问题或获得即时摘要

下载
  • top -H -p <pid></pid> 找出占用 CPU 最高的线程 ID(LWP),记下十进制数
  • 把那个数转成十六进制(比如 12345 → 0x3039),再在 jcmd <pid> Thread.print</pid> 输出里搜 0x3039,就能定位到具体线程栈
  • 别直接用 jstack 替代——有些生产环境禁用 jstack,但 jcmd 往往开着

导出实时运行数据:jcmd <pid> VM.info</pid>VM.system_properties 要搭配着看

单看 VM.info 只给 JVM 启动参数和基本运行时信息(比如 GC 类型、JIT 编译器),看不出当前负载;而 VM.system_properties 里藏着关键线索,比如 java.versionsun.cpu.isalist(影响 JIT 行为)、甚至自定义的 app.env 配置项。

  • VM.info 输出里的 CompilerOracle 行,说明有没有手动排除某些方法 JIT,会影响性能热点判断
  • 如果看到 UseContainerSupport: true,就得小心 MaxRAMPercentage 是否设得太低,导致频繁 GC——这时要同步查 jcmd <pid> VM.flags</pid>
  • 注意:VM.system_properties 不包含环境变量,PATHLD_LIBRARY_PATH 还得去容器或启动脚本里翻

常见失败场景:权限、JDK 版本、容器隔离三重坑

jcmd 看似简单,但在实际排查中经常“没反应”或“拒绝访问”,核心就三个原因。

  • 非 root 用户执行时,目标 JVM 是另一个用户启的(Linux 下默认禁止跨用户 jcmd);解决办法:要么切到同用户,要么用 sudo -u <user> jcmd ...</user>
  • JDK 8u60 之前版本不支持 Thread.print,只认 VM.native_memoryVM.info;确认方式:jcmd <pid> help</pid> 看输出列表有没有 Thread.print
  • Kubernetes Pod 里用 distroless 镜像时,jcmd 命令可能根本不存在;得提前在基础镜像里装好 openjdk-jdk(不只是 JRE),或者改用 jdk-tooling sidecar

线程状态和 CPU 关联性容易被日志掩盖——比如一个线程明明 BLOCKED 在锁上,但日志还在刷 INFO,这时候光看 log 会误判为“正常运行”。必须以 jcmd 输出为准,尤其关注 parking to wait forwaiting on condition 这类提示。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

13

2026.02.03

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

422

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

595

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

422

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

595

2023.08.10

线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

715

2023.08.10

Java 并发编程高级实践
Java 并发编程高级实践

本专题深入讲解 Java 在高并发开发中的核心技术,涵盖线程模型、Thread 与 Runnable、Lock 与 synchronized、原子类、并发容器、线程池(Executor 框架)、阻塞队列、并发工具类(CountDownLatch、Semaphore)、以及高并发系统设计中的关键策略。通过实战案例帮助学习者全面掌握构建高性能并发应用的工程能力。

94

2025.12.01

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1030

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号