jcmd程序须运行在与JVM相同机器上,需拥有与JVM相同的权限。

jcmd程序可在已运行的JVM中,动态地与Java飞行记录器(JFR)交互。

如果,应用程序已处于停止响应状态,则可使用jcmd命令进行数据收集工作,如:收集堆栈信息:jcmd Thread.print。

从远程计算机或使用不同的权限调用诊断命令,可使用如下接口:com.sun.management.DiagnosticCommandMBean

有关DiagnosticCommandMBean接口更多信息,参阅API文档。

jcmd语法jcmd [-l|-h|-help]

jcmd pid|main-class PerfCounter.print

jcmd pid|main-class -f filename

jcmd pid|main-class command[ arguments]

故障排除

jcmd程序提供如下故障排除选项:

录制记录(Start a recording)

示例:在指定Java进程(7060)上开始2分钟记录,并保存到当前目录的myrecording.jfr文件中。jcmd 7060 JFR.start name=MyRecording settings=profile delay=20s duration=2m filename=C:\TEMP\myrecording.jfr

检查记录(Check a recording)

JFR.check检查正在运行的记录,如:jcmd 7060 JFR.check

停止记录(Stop a recording)

JFR.stop命令停止正在运行的记录,如:jcmd 7060 JFR.stop

转储记录(Dump a recording)

JFR.dump命令停止正在运行的录制,并将记录存储到record文件,如:jcmd 7060 JFR.dump name=MyRecording filename=C:\TEMP\myrecording.jfr

创建堆转储(Create a heap dump)

创建堆转储首选方法:jcmd GC.heap_dump filename=Myheapdump

创建堆直方图(Create a heap histogram)

创建堆直方图首选方法:jcmd GC.class_histogram filename=Myheaphistogram

参数说明

jcmd不带参数或使用该-l选项运行,打印正在运行的Java进程标识符列表,包含用于启动进程的main-class和命令行参数。

使用-h或-help选项打印帮助消息。

如果,将进程标识符(pid)或主类(main-class)作为第一个参数,jcmd会将诊断命令发送到指定Java进程,或发送到具有指定启动类的Java进程。可以将0作为进程标识符,将诊断命令发给所有Java进程。

使用如下其中一项作为诊断命令:Perfcounter.print

打印指定Java进程中可用的性能计数器,性能计数器列表会因Java进程不同有所不同。jcmd PerfCounter.print

-f 文件名

从指定文件中读取命令,在目标Java进程上执行这些命令,file中每条命令独占一行,以"#"开头的行被忽略,所有命令调用完后,或者读取到含有stop的关键字,会终止对file的处理。

command [ 参数 ]

发送到指定Java进程的命令,通过向该进程发送help命令,获得指定进程可用的诊断命令列表,每个诊断命令都有自己的一组参数,要查看命令的描述、语法和可用参数列表,使用如下命令:jcmd [options]

注:若参数包含空格,则须用单引号或双引号括起来。此外,须用反斜杠(\)转义单引号或双引号,防止操作系统shell处理引号。

互斥选项

-f 文件名

从指定文件中读取命令,仅在将进程标识符或主类作为第一个参数时才能使用此选项。

-h|-help

打印帮助信息。

-l

使用主类和命令行参数打印正在运行的Java进程标识符列表;也可以使用jps命令。

通用命令

不同版本的HotSpot VM可用的诊断命令有所不同,使用jcmd help,查看当前版本支持的可用选项。

以下是自JDK 8以来,该工具中一些最有用的命令。

注:始终通过jcmd help 获取可用选项。

JDK版本信息jcmd VM.version

VM系统参数

显示数百行信息。jcmd VM.system_properties

VM所有标志参数

即使,没有提供标志,也会打印一些默认值,如:初始/最大堆大小。jcmd VM.flags

以秒为单位打印运行时间jcmd VM.uptime

创建类直方图

结果可能相当冗长,将输出重定向到文件。

内部和特定应用程序类都包含在列表中,占用最多内存的类排在最顶端,按降序对类进行排列。jcmd GC.class_histogram

创建堆转储(hprof dump)jcmd GC.heap_dump filename=Myheapdump

与jmap -dump:file=效果相同, 推荐使用jcmd工具。

创建堆直方图jcmd GC.class_histogram filename=Myheaphistogram

与jmap -histo 效果相同,推荐使用jcmd工具。

打印所有线程堆栈跟踪jcmd Thread.print

命令演示jcmd

5485 sun.tools.jcmd.JCmd

2125 MyProgram

> jcmd MyProgram help (or "jcmd 2125 help")

2125:

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

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

> jcmd MyProgram help Thread.print

2125:

Thread.print

Print all threads with stacktraces.

Impact: Medium: Depends on the number of threads.

Permission: java.lang.management.ManagementPermission(monitor)

Syntax : Thread.print [options]

Options: (options must be specified using the or = syntax)

-l : [optional] print java.util.concurrent locks (BOOLEAN, false)

> jcmd MyProgram Thread.print

2125:

2014-07-04 15:58:56

Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.0-b69 mixed mode):

...

java jcmd,jcmd命令用法相关推荐

  1. java指令工具_jvm 指令工具 jcmd 命令(Java多功能命令行)

    jcmd 命令 在 jdk1.7 之后,新增了一个命令行工具jcmd,它是一个多功能工具,用它可以导出堆,查看java进程,导出线程信息,执行GC等.jcmd能将命令发送给正在运行的JVM,诊断运行中 ...

  2. Linux下常用java问题排查命令、工具

    本文描述的大部分基于linux环境. 对于一个程序,在Linux下我们可以根据程序响应信息查找对应的进程ID: ps -ef | grep java | grep -v grep | |awk '{p ...

  3. 如何在Java中解析命令行参数?

    在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...

  4. java登录界面命令_Java命令行界面(第26部分):CmdOption

    java登录界面命令 由于Tweet,我了解了本系列中第26个基于Java的功能强大的库,该库用于解析命令行参数 . CmdOption在其GitHub主页上被描述为"一个通过注释配置的,用 ...

  5. java登录界面命令_Java命令行界面(第12部分):CLAJR

    java登录界面命令 第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 (CLAJR). 该"库"是单个Java源文件( CLA ...

  6. java登录界面命令_Java命令行界面(第11部分):CmdLn

    java登录界面命令 这篇文章介绍了如何使用Ostermiller Java Utilities 1.08.02的CmdLn(Java命令行解析器)来处理基于Java的应用程序中的命令行参数. Ost ...

  7. java登录界面命令_Java命令行界面(第13部分):JArgs

    java登录界面命令 JArgs 1.0的区别在于,这是我的第13篇文章的主题,该文章是关于Java命令行参数解析的. JArgs是一个开放源代码( BSD许可 )库,主要由Steve Purcell ...

  8. java登录界面命令_Java命令行界面(第15部分):Jargo

    java登录界面命令 Jargo在其GitHub主页上定义为"一种减轻程序参数/选项处理的工具". 当已经存在许多其他命令行处理库时,该页面为另一个命令行处理库提供了基本原理 ,该 ...

  9. java登录界面命令_Java命令行界面(第18部分):JCLAP

    java登录界面命令 Giles Winstanley的JCLAP ( Java命令行参数解析器 )是基于Java的命令行处理库的系列文章中介绍的第18个库. 这篇文章的示例基于JCLAP 1.4 , ...

  10. java登录界面命令_Java命令行界面(第19部分):jClap

    java登录界面命令 本系列中第19个帖子的重点是从Java代码解析命令行参数是jClap ( Java命令行参数解析器 ),不应与JCLAP库混淆,该库是我本系列前 一篇文章的重点. 上 一篇 文章 ...

最新文章

  1. [物理学与PDEs]第1章第7节 媒质中的 Maxwell 方程组 7.2 媒质交界面上的条件
  2. 什么是整洁的代码?什么是肮脏的代码?
  3. 奔跑吧,OpenStack现场分享:超融合架构如何抹平物理硬件差异?
  4. python jupyter安装_python之jupyter的安装
  5. perl pop和push函数,不使用索引更能利用perl的特性,减少边界值错误发生的几率...
  6. 软件设计师 - 算法思想
  7. 变更数据推送java_idea 团队成员修改工程后push推送
  8. OPPO Find X2系列获蓝牙5.1认证:距离正式亮相又近了一步
  9. Linux系统学习: 用户和权限管理指令: 请简述 Linux 权限划分的原则
  10. mysql什么是表的并的关系_MySQL表与表的关系
  11. 用Python合并文件夹下所有pdf文件(包括多级子目录下的pdf文件)
  12. 工具-cloc代码行数统计工具
  13. android学习资料整理-----高级篇
  14. Java面试知识点概览(持续更新)
  15. imazing iOS设备管理软件
  16. Frontend Framework
  17. 数据分析模型篇—波士顿矩阵
  18. Visual C++游戏编程基础之透明半透明效果
  19. 三元组顺序表表示的稀疏矩阵转置(10分)
  20. Exception in thread main java.lang.RuntimeException: java.net.ConnectException错误问题

热门文章

  1. 路由器linux校园网,还在为无法突破校园网的限制而烦恼?动动手,借助路由器完成锐捷认证...
  2. PyTorch使用LMDB数据库加速文件读取
  3. 大华条码秤数据同步发送数据格式
  4. 测试无线电频率的软件叫什么,软件无线电到底是什么
  5. 真么找计算机用户密码,如何查找电脑的用户名和密码
  6. javascript颜色选择器
  7. 怎样关闭Win10系统电脑开机密码?简单几步!如何取消win10电脑开机密码?
  8. C#50个经典小程序代码
  9. 机器学习与算法(6)--学习矢量化
  10. matlab多久可以入门,5分钟入门matlab