jcmd 命令

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

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

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

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

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

jcmd pid|main-class PerfCounter.print

jcmd pid|main-class -f filename

jcmd pid|main-class command[ arguments]

1、帮助➜  kc_script jcmd -h

Usage: jcmd

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

说明-f:从文件中读取并执行命令

-l:本地机器上列出jvm的进程

-h:帮助

2、列出虚拟机

命令:jcmd -l

列出本机所有的虚拟机。[root@searching-search-service-7cbfd67967-lczgh /]# jcmd -l

19 org.apache.catalina.startup.Bootstrap start

3662 sun.tools.jcmd.JCmd -l

3、查看jcmd支持的命令

命令:jcmd help

列出pid对应虚拟机所支持的命令。[root@searching-search-service-7cbfd67967-lczgh /]# jcmd 19 help

19:

The following commands are available:

JFR.stop                        # java飞行记录器 停止

JFR.start                       # java飞行记录器 开始

JFR.dump                        # java飞行记录器 dump

JFR.check                       # java飞行记录器 检查

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堆dump

GC.run_finalization             # gc运行结束

GC.run                          # gc运行

VM.uptime                       # 虚拟机运行时间单位 秒

VM.flags                        # 虚拟机信息

VM.system_properties            # 虚拟机系统配置

VM.command_line                 # 虚拟机命令行

VM.version                      # 虚拟机版本

help

For more information about a specific command use 'help '.

然后挑选出虚拟机支持的任意命令执行:jcmd pid xxx;

如果需要对特定的命令进行帮助说明,可以在 help 之后加上命令名。# 查询内容

[root@searching-search-service-7cbfd67967-lczgh /]# jcmd 19 VM.version

19:

Java HotSpot(TM) 64-Bit Server VM version 25.161-b12

JDK 8.0_161

# 查询帮助

[root@searching-search-service-7cbfd67967-lczgh /]# jcmd 19 help VM.version

19:

VM.version

Print JVM version information.

Impact: Low

Permission: java.util.PropertyPermission(java.vm.version, read)

Syntax: VM.version

帮助信息包含了命令的含义、影响、权限、语法等信息。

4、生成堆dump

命令:jcmd GC.heap_dump filepath

很多时候我们需要生成dump,再使用特定工具去详细进行分析(例如VisualVm)。

之前说过的 jmap 同样可以生成dump文件,Oracle 推荐使用 jcmd。# 生成文件

[root@searching-search-service-7cbfd67967-lczgh /]# jcmd 19 GC.heap_dump gc.hprof

19:

Heap dump file created

# 查看文件大小

[root@searching-search-service-7cbfd67967-lczgh /]# ll -h

-rw-------    1 root root 187M 1月  27 19:08 gc.hprof

5、生成类直方图

命令:jcmd GC.class_histogram

类直方图是一个较为直观的状态去查看内存分布的情况。

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

另外jhat也可以分析出类直方图# 导出到文件

[root@searching-search-service-7cbfd67967-lczgh /]# jcmd 19 GC.class_histogram > tmp.log

# 查看文件

[root@searching-search-service-7cbfd67967-lczgh /]# more tmp.log

19:

num     #instances         #bytes  class name

----------------------------------------------

1:         12844       94591240  [B

2:        145686       20808208  [C

3:         25526        8967192  [Ljava.lang.Object;

4:        142502        3420048  java.lang.String

5:          3276        2149056  io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueue

6:         16175        1795488  java.lang.Class

7:         52844        1691008  java.util.concurrent.ConcurrentHashMap$Node

8:         15177        1335576  java.lang.reflect.Method

9:         38339        1226848  java.util.HashMap$Node

10:           243         982864  [Ljava.nio.ByteBuffer;

11:          8322         829632  [I

12:           232         664304  [Ljava.nio.channels.SelectionKey;

13:          6106         657016  [Ljava.util.HashMap$Node;

14:         13629         654192  java.util.HashMap

15:           914         467192  [Ljava.util.concurrent.ConcurrentHashMap$Node;

16:          1229         462104  java.lang.Thread

17:         26228         419648  java.lang.Object

6、打印线程状态

有时候我们的应用程序会产生死锁或者频繁争抢资源的情况,那么就可以通过打印线程状态来详细分析各个线程的执行状态。jstack

jcmd  Thread.print

故障排除

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

1、录制记录(Start a recording)

示例:在指定Java进程(19)上开始2分钟记录,并保存到当前目录的my-recording.jfr文件中。[root@searching-search-service-7cbfd67967-lczgh /]# jcmd 19 JFR.start name=MyRecording settings=profile delay=20s duration=2m filename=tmp/my-recording.jfr

19:

Java Flight Recorder not enabled.

Use VM.unlock_commercial_features to enable.

如果没有开启会有提示,使用 VM.unlock_commercial_features 开启,在VM options 添加: -XX:+UnlockCommercialFeatures。

2、检查记录(Check a recording)

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

3、停止记录(Stop a recording)

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

4、转储记录(Dump a recording)

JFR.dump命令停止正在运行的录制,并将记录存储到record文件,如:jcmd 19 JFR.dump name=MyRecording filename=tmp/my-recording.jfr

java指令工具_jvm 指令工具 jcmd 命令(Java多功能命令行)相关推荐

  1. 终端查看命令有哪些功能命令_从命令式功能到纯粹功能式功能,再返回:Monads与范围内的延续...

    终端查看命令有哪些功能命令 这段视频附带了这篇文章,没有它就不会太有意义 上个月,我在Curry On会议上做了演讲,该会议是与学术,编程语言会议ECOOP共同举办的新会议. Curry On旨在弥合 ...

  2. java jstack 分析工具_JVM分析工具——jstack实践

    JVM分析工具--jstack实践 一.不是万能的jstack 企业级的Java程序中,java程序出现性能低下甚至直接崩溃时,就不能像解决业务bug那样,从行为表现上来修复问题了.性能问题一般是jv ...

  3. java perm 查看_JVM 分析工具和查看命令,超详细

    jinfo 可以输出并修改运行时的java 进程的opts. jps 与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号. jstat 一个极强 ...

  4. java内存块_JVM上的并发和Java内存模型之同步块笔记

    本文来自 图灵社区@fairjm 转截请注明出处 这个是书的笔记 书可以在safaribooksonline看,话说这个真的是一个很好的读外文书的网站啊,一个月39刀就可以畅想全站的书,很值.(订订订 ...

  5. 七、jdk工具之jconsole命令(Java Monitoring and Management Console)

    目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...

  6. Linux常用基础指令、Linux常用工具(软件包)使用带图详解

    目录 目录相关指令: 文件相关指令: 压缩解压缩指令: 匹配查找指令: 权限相关指令: Linux常用工具: 指令使用规则:指令 [该指令的详细操作选项] [操作对象(通常有路径)],后面两可不加. ...

  7. 【chip-tool】chip-tool工具常用指令介绍

    chip-tool 工具可用于调试 matter 设备,是matter协议新兴起时所使用的重要工具,由于资料都是英文 的很不友好,因此本文根据官方教程和自己的理解整理如下,本文主要介绍 chip-to ...

  8. 关于发那科工具偏移指令

    ​经常遇到用户坐标系斜面需要建立用户坐标,有时建立用户坐标不是太方便,可以使用工具偏移指令向Z方向偏移 使用工具偏移之后原来的工具坐标要修改现在工具坐标系

  9. 字节码是java虚拟机的指令组_JVM??

    [是什么] JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.J ...

最新文章

  1. “互联网+”的时代,易佳互联也随着时代步伐前进着
  2. Java IO流思维导图
  3. 计算机网络电缆被拔出是怎么办,网络电缆被拔出是什么意思?网络电缆被拔出的修复办法...
  4. Jupyter中那些神奇的第三方拓展魔术命令
  5. socket网络编程——TCP编程流程及端口号占用问题
  6. 如何使用域组策略(AD GPO)分发软件安装以及卸载[1.31.2013更新]
  7. linux cd 一些用法
  8. matplotlib -work4
  9. 移动端rem布局(阿里)
  10. 编写更加稳定、可读性强的JavaScript代码
  11. 基于BERT的ASR纠错
  12. 今天写了个查看 ABAP 类层级的程序
  13. 二维码在线生成器如何批量制作设备标牌二维码
  14. 致远项目管理SPM系统五大技术平台层-CMP能力概述
  15. 测绘乙级摄影测量与遥感专业资质需要用到这些人员
  16. 个性化品牌开始繁荣?为设计师和代工厂牵线的平台Maker's Row获得100万美元融资 | 36氪...
  17. 【超全】一文详解机器学习特征工程(附代码)
  18. VS2017无法调试Unity
  19. 来自谷歌大脑的SpineNet:一种非常规的主干结构
  20. HDU 5445 (多重背包)

热门文章

  1. 自古猛兽皆独行,唯有牛羊结成群
  2. node安装指定版本 (LTS 长期稳定版本,Current 最新版本)
  3. Windows程序设计最新书籍教程
  4. win 10 把秘钥清掉之后查不到秘钥怎么办
  5. 元宇宙的“42条共识” ,全网阅读量超1000万!
  6. 服务网关-Zuul(二)
  7. 1.DLL注入相关概念
  8. Unity(一)入门:Unity Hub下载 Unity安装
  9. python 百度云不限速版_现在各位是怎么应对百度网盘限速的?
  10. java中Date的getTime()函数