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

网站规划的基本步骤网站内容的设计与实现

网站规划的基本步骤,网站内容的设计与实现,已经注册了域名 怎么做网站,上海植物租赁做网站jcmd 是 Oracle JDK(Java Development Kit)自 JDK 7 起引入的一个强大的诊断工具,用于与正在运行的 JVM(Java Virtual Machine)实例进行交互。它允许用户执行各种诊断命令,比如线程堆栈分析、堆转储、GC 信…

jcmd 是 Oracle JDK(Java Development Kit)自 JDK 7 起引入的一个强大的诊断工具,用于与正在运行的 JVM(Java Virtual Machine)实例进行交互。它允许用户执行各种诊断命令,比如线程堆栈分析、堆转储、GC 信息、类加载器统计等,非常适合在生产环境中对 Java 应用程序进行调试和监控。

一、jcmd 命令基本语法

jcmd <pid | main-class> <command> [options]
  • <pid>:目标 Java 进程的进程 ID。
  • <main-class>:目标 Java 应用的主类名(可以省略 jar 路径)。
  • <command>:具体的诊断命令,比如 VM.flags
  • [options]:命令附带的参数(具体取决于命令)。

二、查看可用的 Java 进程

jcmd
输出
970 com.dzy.Main
67890 org.apache.catalina.startup.Bootstrap

表示当前有两个 Java 进程在运行,它们的进程 ID 分别是 970 和 67890。


三、常用命令详解与使用示例

1. 查看所有支持的命令

jcmd <pid> help
用法
jcmd 970 help
输出

列出该 JVM 实例支持的所有命令:

970:
VM.version
VM.command_line
VM.flags
Thread.print
GC.heap_info
GC.run
GC.class_histogram
...

2. 查看 JVM 版本信息

jcmd <pid> VM.version
用法
jcmd 970 VM.version
输出
970:
Java HotSpot(TM) 64-Bit Server VM version 17.0.9+11-LTS-201
JDK 17.0.9

3. 查看启动参数

jcmd <pid> VM.command_line
用法
jcmd 970 VM.command_line
输出
Command line:  -Xmx2G -Xms1G -Dspring.profiles.active=prod -jar app.jar

4. 查看 JVM 参数(flags)

jcmd <pid> VM.flags
用法
jcmd 970 VM.flags
输出
-XX:InitialHeapSize=1073741824 -XX:MaxHeapSize=2147483648 -XX:+UseG1GC

5. 打印线程堆栈(类似 jstack

jcmd <pid> Thread.print
用法
jcmd 970 Thread.print
输出

列出所有线程的栈信息,包括锁等待、阻塞等,非常适合死锁分析。

6. 强制触发 GC

jcmd <pid> GC.run
用法
jcmd 970 GC.run

此命令不会显示太多输出,但会触发一次完全 GC。

7. 获取堆信息(heap 使用情况)

jcmd <pid> GC.heap_info
用法
jcmd 970 GC.heap_info
输出
Heap Configuration:MinHeapFreeRatio         = 40MaxHeapFreeRatio         = 70...
Heap Usage:G1 Heap:regions  = 2048capacity = 2048Mused     = 1024Mfree     = 1024M

8. 导出 heap dump(堆快照)

jcmd <pid> GC.heap_dump /path/to/heapdump.hprof
用法
jcmd 970 GC.heap_dump /tmp/app-heap.hprof

文件可以用 MAT 或 VisualVM 分析。

9. 类直方图(类实例计数)

jcmd <pid> GC.class_histogram
用法
jcmd 970 GC.class_histogram
或者输出到文件
jcmd 970 GC.class_histogram > histogram.txt
输出
 num     #instances         #bytes  class name
----------------------------------------------1:        10000        1600000  [C2:         5000         800000  java.lang.String3:         3000         720000  java.util.HashMap

10. 导出类加载器信息

jcmd <pid> VM.class_loader_stats
用法
jcmd 970 VM.class_loader_stats
输出

统计各类加载器加载的类数量、占用内存等信息。

11. 检查是否发生了死锁

jcmd <pid> Thread.print
用法
jcmd 970 Thread.print

系统会显示哪些线程在等待锁、拥有锁,如果存在死锁,会提示 Found one Java-level deadlock.

12. 查看 Metaspace 使用情况

jcmd <pid> VM.native_memory summary
用法
jcmd 970 VM.native_memory summary

需要启动 JVM 时开启:

-XX:NativeMemoryTracking=summary

13. 查看系统属性(类似 System.getProperties)

jcmd <pid> VM.system_properties
用法
jcmd 970 VM.system_properties

14. 使用 Java Flight Recorder(JDK 11+)

JFR.start, JFR.dump, JFR.stop

# 启动 JFR
jcmd 970 JFR.start name=profile settings=profile duration=60s filename=/tmp/recording.jfr# 手动 dump
jcmd 970 JFR.dump name=profile filename=/tmp/manual.jfr# 停止 JFR
jcmd 970 JFR.stop name=profile

15. 查看 JIT 编译缓存区状态

jcmd <pid> Compiler.codecache
用法
jcmd 970 Compiler.codecache

四、常见场景使用

性能监控中查看当前内存使用情况

jcmd $(pidof java) GC.heap_info

导出内存快照进行 OOM 分析

jcmd $(pidof java) GC.heap_dump /tmp/dump-$(date +%s).hprof

分析线程死锁或阻塞线程

jcmd $(pidof java) Thread.print > /tmp/thread-dump.log

定时触发 GC 以排查内存回收异常

watch -n 60 "jcmd $(pidof java) GC.run"

Java 服务卡顿,想排查是否 GC 频繁

jcmd <pid> GC.heap_info
jcmd <pid> GC.class_histogram
jcmd <pid> GC.run
jcmd <pid> GC.class_histogram

比较前后对象数量是否减少,分析垃圾回收效率。

服务 CPU 飙高,定位是哪条线程

  1. 查看线程信息(找到耗 CPU 的线程)
top -Hp <pid>
  1. 将该线程 TID 转为十六进制(假设是 970 → 0x3039)
print "%x/n" <pid>
  1. jcmd 输出中查找栈
jcmd <pid> Thread.print | grep -A 20 0x3039

导出类实例占用查看内存增长

jcmd <pid> GC.class_histogram > before.txt
# 10分钟后
jcmd <pid> GC.class_histogram > after.txt
diff before.txt after.txt

分析 JVM 启动参数差异

jcmd <pid> VM.flags
jcmd <pid> VM.command_line

五、注意

  • jcmd 只能对当前用户启动的 Java 进程使用,或者以 root 权限运行。
  • 输出信息比较多,建议重定向到文件进行分析。
  • jstackjmap 等相比,jcmd 更统一、更高效。
功能命令
查看进程列表jcmd
查看支持命令jcmd <pid> help
JVM 版本jcmd <pid> VM.version
JVM 启动参数jcmd <pid> VM.command_line / VM.flags
手动 GCjcmd <pid> GC.run
打印线程堆栈jcmd <pid> Thread.print
类占用分析jcmd <pid> GC.class_histogram
原生内存jcmd <pid> VM.native_memory summary
启动/导出 JFRjcmd <pid> JFR.*
http://www.dtcms.com/a/543375.html

相关文章:

  • 东莞营销网站建青岛自媒体公司排名
  • 做网站外包的公司好干嘛温州网站专业制作
  • 导航网站设计奥迪汽车建设网站
  • 黄页88网是什么性质的网站网站官网建设方案
  • 软件外包什么意思百度seo关键词点击软件
  • 赤壁网站建设公司用html制作一个注册页面
  • 网站开发外包哪家好网页设计软件官网模板网站
  • 品牌营销网站建设网站中的搜索功能怎么做
  • 东莞网站优化专家做公司的网站有哪些东西
  • 如何增加网站转化率做市场调查的网站
  • 公司网站设计费计入什么科目做vi网站
  • 专业商城网站设计如何引流推广产品
  • 制作网站要不要域名游戏网站创建
  • 百度网站排名seo类似淘宝网站模板
  • apache搭建网站商丘网络营销公司
  • 台州做网站最好的广东今科网站建设
  • 聊城网站策划上海百度网络推广
  • 定制网站开发接私活中国交通建设集团有限公司网站
  • 世界电商网站排名app页面模板简单制作
  • 网站建设期末作业wordpress 标签搜索
  • 什么是网站改版企业搜索引擎优化
  • 99元一月做网站客套企业名录搜索
  • pageadmin做网站前端网页
  • 兴义住房和城乡建设局网站html5手机网站
  • taoyin8 wordpress网站资质优化
  • 做网站店铺图片用什么软件服务号微网站怎么做的
  • 建设工程图审管理信息系统网站建网站费用会计分录
  • 贵州省建设厅网站文件网站配色与布局
  • 网站开发以图片为背景网站seo优化是什么
  • 河南 医院 网站建设怎么制作网站教程下载