在这篇博文中,我们将通过实例来学习JCMD命令行工具。
JCMD命令工具
JCMD是用于诊断Java进程的命令行工具。在Java应用程序中,这将有助于调试以下使用情况:
- 当Java应用程序崩溃时
- 了解应用程序堆内存和垃圾收集的情况
- 排除故障和诊断JVM应用程序
这个工具可作为Java JDK安装的一部分。
它发送一个诊断信号来检索JVM的调试信息进程ID和类。
这个单一的工具可以回答以下大部分问题
- 如何使用jcmd找到正在运行的java进程的列表,而不使用选项
- 如何使用Thread.print为一个java进程生成线程转储。
- 如何使用GC.run从命令行启用垃圾收集运行
- 如何使用ManagementAgent.stop/start/start_local管理远程管理代理
- 使用native_memory查看应用程序的本地内存使用情况
- 使用VM.system_properties列出系统属性
- 获取一个JVM的所有属性的报告
- 使用VM.version显示HotSpot和JDK版本
- 使用VM.flags获得所有打印出来的标志。
- 使用VM.uptime获得JVM应用程序的运行时间
- 使用GC.class_histogram显示类的内存使用直方图
- 如何使用GC.heap_dump获取java应用程序的Heap dump?
语法
选项是-l和-h 当没有提供药水时,它会打印出java进程的列表 -f选项 这个选项允许从文件中读取命令 -l选项 显示java进程的信息列表 -h帮助选项
B:\Workspace\modifysf>jcmd -l
4656 org.codehaus.plexus.classworlds.launcher.Launcher
5412 sun.tools.jcmd.JCmd -l
10444 com.kiran.MainApp
上述命令给出了在JVM中运行的进程ID和进程名称。接下来,为了获得每个进程的详细诊断信息,我们需要再运行一条命令来获得命令列表
B:\Workspace\modifysf>jcmd org.codehaus.plexus.classworlds.launcher.Launcher help
6604:
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
GC.rotate_log
Thread.print
GC.class_stats
GC.class_histogram
GC.heap_dump
GC.run_finalization
GC.run
VM.uptime
VM.flags
VM.system_properties
VM.command_line
VM.version
help
For more information about a specific command use 'help '.
java flight recorder stop/start/dump/check options
java飞行记录器分析了记录,并允许获得关于应用程序和JVM的微观细节。这个功能在java商业许可中是可用的。要使用这个记录,首先,我们需要在应用程序中启用它
java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
JFR.stop - 停止记录
JFR.start - 该选项允许启动记录
JFR.dump - 转载所有数据 JFR.
check - 返回进程的记录状态
本机内存摘要细节
本机内存的使用将不会被跟踪。可以通过使用-XX:NativeMemoryTracking=detail来启动应用程序 这里是特定进程的本地内存的命令
jcmd org.codehaus.plexus.classworlds.launcher.Launcher VM.native_memory