讲师中心 微信公众号
AI工具推荐 视频效率加速

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

落强姑娘_2890

落强姑娘_2890

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

|

548人浏览过

|

来源于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 层配合。

标准做法是两步走:

  • 用 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.version、sun.cpu.isalist(影响 JIT 行为)、甚至自定义的 app.env 配置项。

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

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

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

  • 非 root 用户执行时,目标 JVM 是另一个用户启的(Linux 下默认禁止跨用户 jcmd);解决办法:要么切到同用户,要么用 sudo -u <user> jcmd ...</user>
  • JDK 8u60 之前版本不支持 Thread.print,只认 VM.native_memory 和 VM.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 for 和 waiting on condition 这类提示。

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

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

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

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

3260

2023.09.27

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

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

269

2026.02.03

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

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

6547

2023.07.18

堆和栈区别
堆和栈区别

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

2728

2023.08.10

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

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

6547

2023.07.18

堆和栈区别
堆和栈区别

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

2728

2023.08.10

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

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

4618

2023.08.10

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

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

583

2025.12.01

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

0

2026.11.03

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn