性能分析工具-JMCD

JCMD介绍

 

The jcmd utility is used to send diagnostic command requests to the JVM, where these requests are useful for controlling Java Flight Recordings, troubleshoot, and diagnose JVM and Java Applications

“JCMD 工具被用来向JVM发送一些诊断命令,这些诊断命令可以用来获取JFR日志、故障排除、诊断JVM和应用程序”

JCMD基本命令

1.概览

可以通过jcmd  <process id> help 查看jmcd 支持的命令。如下:

jcmd 15249 help

15249:

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

如果想了解每个命令的使用,可以执行jcmd  <process id> help <command>,如:

jcmd 15249 help VM.version

15249:

VM.version

Print JVM version information.

Impact: Low

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

2.详细介绍

命令

说明

使用

命令执行结果

VM.version

打印hotsspot和jdk信息

jcmd <process id> VM.version

jcmd 15249 VM.version

15249:

Java HotSpot(TM) 64-Bit Server VM version 25.101-b13

JDK 8.0_101

VM.system_properties

打印系统属性

jcmd <process id> VM.system_properties

 

VM.flags

打印JVM配置参数

jcmd <process id> VM.flags

jcmd 15249 VM.flags

15249:

-XX:CICompilerCount=4 -XX:+FlightRecorder -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=734003200 -XX:MaxNewSize=244318208 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=89128960 -XX:OldSize=179306496 -XX:+UnlockCommercialFeatures -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseParallelGC 

VM.uptime

JVM更新距今时间

jcmd <process id> VM.uptime

jcmd 15249 VM.uptime

15249:

36799.868 s

GC.class_histogram

已图形的方式展示出类分配的实例数量和占用内存情况

jcmd <process id> GC.class_histogram

jcmd 15249 GC.class_histogram

15249:

 

 num     #instances         #bytes  class name

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

   1:           729       17004824  [B

   2:         15850        1550560  [C

   3:          4299         482792  java.lang.Class

 

GC.heap_dump

dump堆日志

jcmd <process id> GC.heap_dump filename=Myheapdump

jcmd 355 GC.heap_dump /tmp/01.hprof

在tmp目录下生成01.hprof文件

Thread.print

打印线程栈日志

jcmd <process id> Thread.print

 

JFR.start

开始收集jfr文件

jcmd <process id> JFR.start

jcmd 15249 JFR.start duration=2m delay=10s filename="/tmp/my11.jfr" name="1122"

在jfr启动10s后进行2分钟的日志收集,收集结果的存储路径为/tmp/my11.jfr,文件名为my11.jfr,执行的收集任务名称为1122

JFR.check

检查执行过和正在执行的日志收集任务

jcmd <process id> JFR.check

jcmd 15249 JFR.check

15249:

Recording: recording=2 name="my.jfr" duration=1m filename="/tmp/my.jfr" compress=false (stopped)

 

Recording: recording=4 name="1122" duration=2m filename="/tmp/my12.jfr" compress=false (running)

JFR.stop

停止正在日志收集的任务

jcmd <process id> JFR.stop

根据recording 进行停止jcmd 15249 JFR.stop recording=2 

根据name进行停止jcmd 15249 JFR.stop name=1122

JFR.dump

停止一个正在执行的日志收集任务,并导出到文件

jcmd <process id> JFR.dump

jcmd 15249 JFR.dump name="1122" filename="/tmp/1234.dump"

 

VM.native_memory

输出堆的使用情况

jcmd <process id> VM.native_memory

jcmd 358 VM.native_memory

358:

Native memory tracking is not enabled

原因:未开启开启NMT;

可以用-XX:NativeMemoryTracking=summary开启。

 

VM.check_commercial_features

检查商业特性是否已开启

jcmd <process id> VM.check_commercial_features

jcmd 358 VM.check_commercial_features

358:

Commercial Features are locked

VM.unlock_commercial_features

开启商业特性

jcmd <process id> VM.unlock_commercial_features

jcmd 358 VM.unlock_commercial_features

358:

Commercial Features now unlocked.

jcmd 358 VM.check_commercial_features

358:

Commercial Features are unlocked.

Status of individual features:

  Java Flight Recorder has not been used.

  Resource Management is disabled.

ManagementAgent.start

创建一个本地和远程服务器通信的连接,建立链接后,可以通过JMC对远程服务器进行实时监控,操作JMX暴漏出来的接口

jcmd <process id> ManagementAgent.start mxremote.port=port

jmxremote.rmi.port=port

mxremote.ssl=false jmxremote.authenticate=false

jcmd 358 ManagementAgent.start jmxremote.port=8888 jmxremote.rmi.port=8888 jmxremote.ssl=false jmxremote.authenticate=false

358:

Command executed successfully

ManagementAgent.stop

终止通信

jcmd <process id> ManagementAgent.stop

jcmd 358 ManagementAgent.stop

358:

Command executed successfully

ManagementAgent.start_local

建立一个本地的链接

jcmd <process id> ManagementAgent.start_local

jcmd 15249 ManagementAgent.start_local

15249:

Command executed successfully

GC.rotate_log

对GC日志进行切割操作

jcmd <process id> GC.rotate_log

 

GC.class_stats

统计类的相关信息

jcmd <process id> GC.class_stats

jcmd 15249 GC.class_stats

15249:

GC.class_stats command requires -XX:+UnlockDiagnosticVMOptions

需要增加XX:+UnlockDiagnosticVMOptions启动参数

GC.run_finalization

执行一次finalization操作,相当于执行java.lang.System.runFinalization()

jcmd <process id> GC.run_finalization

 

GC.run

通知执行一次fullgc操作,但是不一定执行

jcmd <process id> GC.run

jcmd 358 GC.run

358:

Explicit GC is disabled, no GC has been performed

需要设置

-XX:-DisableExplicitGC

 

VM.command_line

打印JVM命令行参数

jcmd <process id> VM.command_line

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值