jcmd命令行工具:用于调试和诊断java应用程序

142 阅读2分钟

在这篇博文中,我们将通过实例来学习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