1.概述
Jcmd是一个诊断Jvm的命令集工具, 集成了包括Jps, Jstack以及采集JFR信息等功能. 它必须运行在被诊断Jvm进程的同一台机器上.
1)查询JVM进程及PID
/dapeng-container/bin # jcmd -l
252 sun.tools.jcmd.JCmd -l
13 com.github.dapeng.bootstrap.Bootstrap
2)查询指定进程及
/dapeng-container/bin # jcmd 13 VM.flags
13:
-XX:CICompilerCount=3 -XX:+HeapDumpOnOutOfMemoryError -XX:InitialHeapSize=268435456 -XX:MaxHeapSize=268435456 -XX:MaxNewSize=134217728 -XX:MinHeapDeltaBytes=524288 -XX:NewRatio=1 -XX:NewSize=134217728 -XX:OldSize=134217728 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:SurvivorRatio=30 -XX:ThreadStackSize=256 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC -XX:+UseParallelOldGC

2.功能描述
2.1 查看Jvm进程
等同于Jps,但信息更加详细
jcmd -l
166 sun.tools.jcmd.JCmd
11 com.github.dapeng.bootstrap.Bootstrap

2.2 查看某Jvm进程可用操作
jcmd pid help
jcmd 3202 help
3202:
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 <command>'.

2.3 查看操作的帮助信息(low)
可查看操作命令的说明, 语法以及该操作对jvm进程的影响
# jcmd 3202 help GC.run
3202:
GC.run
Call java.lang.System.gc().
Impact: Medium: Depends on Java heap size and content.
Syntax: GC.run
2.4 启用JVM高级特性(low)
启用某些高级的特性,例如JFR
# jcmd 12 VM.check_commercial_features
12:
Commercial Features are locked.
# jcmd 12 VM.unlock_commercial_features
12:
Commercial Features now unlocked.
# jcmd 12 VM.check_commercial_features
12:
Commercial Features are unlocked.
Status of individual features:
Java Flight Recorder has not been used.
Resource Management is disabled.
Current Memory Restriction: None (0)

2.5 开始记录JFR飞行记录仪(medium)
在 JDK 8u40 之前,JVM 必须带启动标记: -XX:+UnlockCommercialFeatures -XX:FlightRecorder,从 JDK 8u40 开始,JFR 可以在运行时启用。
使用前打开JVM的高级特性:
jcmd $PID VM.unlock_commercial_features

# jcmd 12 help JFR.start
12:
JFR.start
Starts a new JFR recording
Impact: Medium: Depending on the settings for a recording, the impact can range from low to high.
Permission: java.lang.management.ManagementPermission(monitor)
Syntax : JFR.start [options]
Options: (options must be specified using the <key> or <key>=<value> syntax)
name : [optional] Name that can be used to identify recording, e.g. \"My Recording\" (STRING, no default value)
defaultrecording : [optional] Starts the default recording, can only be combined with settings. (BOOLEAN, false)
dumponexit : [optional] Dump running recording when JVM shuts down (BOOLEAN, no default value)
settings : [optional] Settings file(s), e.g. profile or default. See JRE_HOME/lib/jfr (STRING SET, no default value)
delay : [optional] Delay recording start with (s)econds, (m)inutes), (h)ours), or (d)ays, e.g. 5h. (NANOTIME, 0)
duration : [optional] Duration of recording in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 300s. (NANOTIME, 0)
filename : [optional] Resulting recording filename, e.g. \"/home/user/My Recording.jfr\" (STRING, no default value)
compress : [optional] GZip-compress the resulting recording file (BOOLEAN, false)
maxage : [optional] Maximum time to keep recorded data (on disk) in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 60m, or 0 for no limit (NANOTIME, 0)
maxsize : [optional] Maximum amount of bytes to keep (on disk) in (k)B, (M)B or (G)B, e.g. 500M, or 0 for no limit (MEMORY SIZE, 0)
jcmd $PID JFR.start name=dapeng,duration=120s
等待至少duration(本文设定120s)后,执行命令:
jcmd $PID JFR.dump name=dapeng,duration=120s filename=dapeng.jfr(注意,文件名必须为.jfr后缀)
检查JFR状态
jcmd $PID JFR.check name=dapeng,duration=120s
停止JFR
jcmd $PID JFR.stop name=dapeng,duration=120s
2.2 查看进程的Jvm参数(low)
例如GC算法, 内存分配等
# jcmd 12 VM.flags
12:
-XX:CICompilerCount=3 -XX:+HeapDumpOnOutOfMemoryError -XX:InitialHeapSize=2147483648 -XX:MaxHeapSize=2147483648 -XX:MaxNewSize=715653120 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=715653120 -XX:OldSize=1431830528 -XX:+PrintGC -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:ThreadStackSize=256 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC

2.2 查看进程的命令行启动参数(low)
例如GC算法, 内存分配等
# jcmd 12 VM.command_line
12:
VM Arguments:
jvm_args: -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8 -Dname=commonData_service -Dfile.encoding=UTF-8 -Dsun.jun.encoding=UTF-8 -Xms256m -Xmx256m -Xloggc:/dapeng-container/bin/../logs/gc.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+PrintGC -XX:+HeapDumpOnOutOfMemoryError -Dsoa.base=/dapeng-container/bin/../ -Dsoa.run.mode=native -Dsoa.transactional.enable=false -Dsoa.monitor.enable=true -Dsoa.core.pool.size=100 -Xms2g -Xmx2g -Xss256K
java_command: com.github.dapeng.bootstrap.Bootstrap
java_class_path (initial): ./dapeng-bootstrap.jar
Launcher Type: SUN_STANDARD

2.2 查看JDK版本(low)
# jcmd 12 VM.version
12:
Java HotSpot(TM) 64-Bit Server VM version 25.131-b11
JDK 8.0_131

2.2 查看Jvm进程运行时间(low)
# jcmd 12 VM.uptime
12:
9530.265 s
2.2 查看Jvm系统变量(low)
# jcmd 12 VM.system_properties
12:
#Fri Apr 13 00:31:37 GMT+08:00 2018
sun.jun.encoding=UTF-8
java.runtime.name=Java(TM) SE Runtime Environment
sun.boot.library.path=/opt/oracle-server-jre/jre/lib/amd64
java.vm.version=25.131-b11
java.vm.vendor=Oracle Corporation
java.vendor.url=http\://java.oracle.com/
path.separator=\:
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
soa.base=/dapeng-container/bin/../
file.encoding.pkg=sun.io
user.country=US
sun.java.launcher=SUN_STANDARD
sun.os.patch.level=unknown
java.vm.specification.name=Java Virtual Machine Specification
user.dir=/dapeng-container/bin
java.runtime.version=1.8.0_131-b11
soa.monitor.enable=true
java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
java.endorsed.dirs=/opt/oracle-server-jre/jre/lib/endorsed
os.arch=amd64
name=commonData_service
java.io.tmpdir=/tmp
line.separator=\n
java.vm.specification.vendor=Oracle Corporation
soa.core.pool.size=100
os.name=Linux
sun.jnu.encoding=ANSI_X3.4-1968
java.library.path=/usr/java/packages/lib/amd64\:/usr/lib64\:/lib64\:/lib\:/usr/lib
sun.nio.ch.bugLevel=
java.specification.name=Java Platform API Specification
java.class.version=52.0
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
os.version=3.10.0-514.el7.x86_64
user.home=/root
soa.transactional.enable=false
user.timezone=GMT+08\:00
java.awt.printerjob=sun.print.PSPrinterJob
file.encoding=UTF-8
java.specification.version=1.8
java.class.path=./dapeng-bootstrap.jar
user.name=root
java.vm.specification.version=1.8
sun.java.command=com.github.dapeng.bootstrap.Bootstrap
java.home=/opt/oracle-server-jre/jre
sun.arch.data.model=64
user.language=en
java.specification.vendor=Oracle Corporation
soa.run.mode=native
awt.toolkit=sun.awt.X11.XToolkit
java.vm.info=mixed mode
java.version=1.8.0_131
java.ext.dirs=/opt/oracle-server-jre/jre/lib/ext\:/usr/java/packages/lib/ext
sun.boot.class.path=/opt/oracle-server-jre/jre/lib/resources.jar\:/opt/oracle-server-jre/jre/lib/rt.jar\:/opt/oracle-server-jre/jre/lib/sunrsasign.jar\:/opt/oracle-server-jre/jre/lib/jsse.jar\:/opt/oracle-server-jre/jre/lib/jce.jar\:/opt/oracle-server-jre/jre/lib/charsets.jar\:/opt/oracle-server-jre/jre/lib/jfr.jar\:/opt/oracle-server-jre/jre/classes
java.vendor=Oracle Corporation
file.separator=/
java.vendor.url.bug=http\://bugreport.sun.com/bugreport/
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.endian=little
sun.cpu.isalist=

JVM监控命令的更多相关文章

  1. JVM监控命令详解(转)

    JVM监控命令基本就是 jps.jstack.jmap.jhat.jstat 几个命令的使用就可以了 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外 ...

  2. jvm监控命令介绍

    1.jstack介绍 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在 ...

  3. jvm监控命令-jstat

    jstat 用于查看服务器上某个服务的GC情况. 一般使用方式jstat –gcpid或jstat –utilpid 时间间隔-每个一定时间(指定的时间间隔)输出一次进程pid的内存情况及gc情况. ...

  4. JVM的监控命令

    JVM监控命令基本就是 jps.jstack.jmap.jhat.jstat 几个命令的使用就可以了 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外 ...

  5. JVM基础系列第15讲:JDK性能监控命令

    查看虚拟机进程:jps 命令 jps 命令可以列出所有的 Java 进程.如果 jps 不加任何参数,可以列出 Java 程序的进程 ID 以及 Main 函数短名称,如下所示. $ jps 6540 ...

  6. JVM监控和调优常用命令工具总结

    JVM监控和调优 在Java应用和服务出现莫名的卡顿.CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非 ...

  7. Java系列笔记(4) - JVM监控与调优

    目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例     光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...

  8. Linux系统监控命令及如何定位到Java线程

    >>PID.TID的区分 uid是user id,即用户id,root用户的uid是0,0为最高权限,gid是group id,用户组id,使用 id 命令可以很简单的通过用户名查看UID ...

  9. jvm 监控

    jvm监控可视化的有 jconsole .jmc .jvisualvm 其中jvisualvm开启一些监控会导致他自己关闭. 并且jdk下有很多工具可以进行jvm监控, jmap -histo:liv ...

随机推荐

  1. 论文阅读 | CrystalBall: A Visual Analytic System for Future Event Discovery and Analysis from Social Media Data

    CrystalBall: A Visual Analytic System for Future Event Discovery and Analysis from Social Media Data ...

  2. 关于二叉查找树的一些事儿(bst详解,平衡树入门)

    最近刚学了平衡树,然后突发奇想写几篇博客纪念一下,可能由于是刚学的缘故,还有点儿生疏,望大家海涵 说到平衡树,就不得不从基础说起,而基础,正是二叉查找树 什么是二叉查找树?? 大家观察一下下面的这棵二 ...

  3. 磁盘上没有足够的空间完成此操作的解决办法_Windows小知识

    前言: 我们有时候调整系统分区时会遇到"磁盘上没有足够的空间完成此操作"的情况导致我们的分区无法完成,然而我们的磁盘上明明有未分配的空间,为什么不能创建磁盘分区呢?本文将介绍通过把 ...

  4. python3的文件读取问题

    今天在调python程序时,遇到了一个报错:illegal multibyte sequence. 后来在网上查资料,是文件读取的编码问题. py3读取文件的时候是可以指定编码的:open('file ...

  5. FreeRTOS数据结构(一)--链表和链表项

    结构体定义 /*链表结构体*/ typedef struct xLIST { listFIRST_LIST_INTEGRITY_CHECK_VALUE /*用于链表完整性检查*/ configLIST ...

  6. [Python接口自动化]从零开始学习python自动化(1):环境搭建

    第一步:安装python编译环境 安装python编译环境之前,必须保证已安装jdk哈,如果为安装,请参考https://jingyan.baidu.com/article/6dad5075d1dc4 ...

  7. election.go

    package)) ].GetResponseRange().Kvs[] ) ].Value),]         }         wch := client.Watch(cctx, string ...

  8. bzoj 4501 旅行

    01分数规划+最大权闭合子图 倒拓扑序处理每个节点 $$f[x]=\frac{\sum{f[v]}}{n}+1$$ 二分答案$val$ 只需要判断是否存在$\sum{f[v]}+1-val>0$ ...

  9. 【强连通分量+概率】Bzoj2438 杀人游戏

    Description 一位冷血的杀手潜入 Na-wiat,并假装成平民.警察希望能在 N 个人里面,查出谁是杀手. 警察能够对每一个人进行查证,假如查证的对象是平民,他会告诉警察,他认识的人, 谁是 ...

  10. BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路

    BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M ...