jcmd——多功能命令行

一 点睛

在 JDK 1.7 以后,新增了一个命令行工具 jcmd。它是一个多功能的工具,可以用来实现前面除了 jstat 之外所有命令的功能。比如:用它来导出堆、内存使用、查看 Java 进程、导出线程信息、执行 GC、JVM 运行时间等。

官方帮助文档:https://docs.oracle.com/en/java/javase/11/tools/jcmd.html

jcmd 拥有 jmap 的大部分功能,并且在 Oracle 的官方网站上也推荐使用 jcmd 命令代 jmap 命令

jcmd -l:列出所有的 JVM 进程

jcmd 进程号 help:针对指定的进程,列出支持的所有具体命令

jcmd 进程号 具体命令:显示指定进程的指令命令的数据

  • Thread.print 可以替换 jstack 指令

  • GC.class_histogram 可以替换 jmap 中的-histo 操作

  • GC.heap_dump 可以替换 jmap 中的-dump 操作

  • GC.run 可以查看 GC 的执行情况

  • VM.uptime 可以查看程序的总执行时间,可以替换 jstat 指令中的 -t 操作

  • VM.system_properties 可以替换 jinfo -sysprops 进程 id

  • VM.flags 可以获取 JVM 的配置参数信息

二 实战

1 基本使用

# jcmd 单独使用功能类似 jps
E:\JVMDemo3>jcmd
10576
4444 sun.tools.jcmd.JCmd

E:\JVMDemo3>jps
10576
4556 Jps

# jcmd 的帮助
E:\JVMDemo3>jcmd -h
Usage: jcmd <pid | main class> <command ...|PerfCounter.print|-f file>
   or: jcmd -l
   or: jcmd -h

  command must be a valid jcmd command for the selected jvm.
  Use the command "help" to see which commands are available.
  If the pid is 0, commands will be sent to all Java processes.
  The main class argument will be used to match (either partially
  or fully) the class used to start Java.
  If no options are given, lists Java processes (same as -p).

  PerfCounter.print display the counters exposed by this process
  -f  read and execute commands from the file
  -l  list JVM processes on the local machine
  -h  this help

2 jcmd -l——类似 jps 功能

E:\JVMDemo3>jcmd -l
10576
13716 sun.tools.jcmd.JCmd -l
16324 org.jetbrains.jps.cmdline.Launcher D:/ProgramFiles/JetBrains/IDEA/lib/jna.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-builder-support-3.6.1.jar;D:/ProgramFiles/JetBrains/IDEA/lib/httpclient-4.5.12.jar;D:/ProgramFiles/JetBrain
s/IDEA/lib/slf4j-api-1.7.25.jar;D:/ProgramFiles/JetBrains/IDEA/plugins/java/lib/jps-builders.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-resolver-provider-3.6.1.jar;D:/ProgramFiles/JetBrains/IDEA/lib/lz4-java-1.7.1.jar;D:/ProgramFi
les/JetBrains/IDEA/lib/annotations.jar;D:/ProgramFiles/JetBrains/IDEA/plugins/java/lib/jps-builders-6.jar;D:/ProgramFiles/JetBrains/IDEA/lib/log4j.jar;D:/ProgramFiles/JetBrains/IDEA/lib/maven-resolver-util-1.3.3.jar;D:/ProgramFiles/
JetBrains/IDEA/lib/maven-resolver-impl-1.3.3.jar;D:/ProgramFiles/JetBrains/IDEA/lib/oro-2.0.8.jar;D:/ProgramFiles/JetBrains/IDEA/lib/idea_rt.jar;D:/ProgramFiles/JetBrains/IDEA/lib/plexus-utils-3.2.0.jar;D:/ProgramFiles/JetBrains/IDE
A/lib/netty-buffer-4.1.47.Final.jar;D:/ProgramFiles/JetBrains/IDEA/lib/netty-resolver-4.1.47.Final.jar
8520 chaper02.ThreadDeadLock

3 jcmd pid help——某一进程能使用的命令

E:\JVMDemo3>jcmd 8520 help
8520:
The following commands are available:
JFR.stop
JFR.start
JFR.dump
JFR.check
VM.native_memory
VM.check_commercial_features
VM.unlock_commercial_features
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
VM.classloader_stats
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.finalizer_info
GC.heap_info
GC.run_finalization
GC.run
VM.uptime
VM.dynlibs
VM.flags
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值