转自Devopslab' blog
(此处附带一篇美团点评团队的文章:Spring MVC注解故障追踪记)
jcmd用于向正在运行的JVM发送诊断信息请求,是从JDK1.7开始提供可以说是jstack和jps的结合体
命令格式
|
jcmd [ options ]
jcmd [ pid | main-class ] PerfCounter.print
jcmd [ pid | main-class ] command [ arguments ]
jcmd [ pid | main-class ] -f file
|
options
命令行选项
pid
结束命令请求的进程ID
main-class
接收诊断命令请求的进程的main类
command [arguments]
命令
假使想要发送一个诊断命令请求到com.example.MyClass name=”Value of name argument”,其命令格式如下
|
jcmd com.example.MyClass name=\"Value of name argument\"
jcmd com.example.MyClass name="'Value of name argument'"
jcmd com.example.MyClass name='"Value of name argument"'
|
PerfCounter.print
打印目标进程的性能计数器
- file
从文件file中读取命令,然后在目标Java进程上调用这些命令。在file中,每个命令必须写在单独的一行。
以"#"开头的行会被忽略。当所有行的命令被调用完毕后,或者读取到含有stop关键字的命令,
将会终止对file的处理。
实例查看当前java进程
|
$ jcmd
#进程pid #进程mainClass
7012 sun.tools.jcmd.JCmd
4876 org.apache.catalina.startup.Bootstrap start
|
查看目标jvm中能获取到的信息
|
$ jcmd 4876 help
4876:
The following commands are available:
VM.native_memory
VM.commercial_features
ManagementAgent.stop
ManagementAgent.start_local
ManagementAgent.start
Thread.print
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>'.
#如上所示有很多选项 要查看具体的选项意思和用法可以利用如下方式查看帮助信息
#jcmd pid help <command>
#例如
$ jcmd 4876 help GC.run
4876:
GC.run
Call java.lang.System.gc().
Impact: Medium: Depends on Java heap size and content.
Syntax: GC.run
|
查看目标jvm进程的版本信息
|
$ jcmd 4876 VM.version
4876:
Java HotSpot(TM) Client VM version 24.75-b04
JDK 7.0_75
|
查看目标JVM进程的properties
|
$ jcmd 4876 VM.system_properties
4876:
#Wed Jan 20 11:08:17 CST 2016
java.runtime.name=Java(TM) SE Runtime Environment
java.vm.version=24.75-b04
shared.loader=
java.vm.vendor=Oracle Corporation
java.vendor.url=http\://java.oracle.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
tomcat.util.buf.StringCache.byte.enabled=true
file.encoding.pkg=sun.io
user.script=
|
查看目标进程的参数
|
$ jcmd 4876 VM.flags
4876:
-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=268435456 -XX:-UseLargePagesIndividualAllocation
|
查看类柱形图
这里和jmap -histo pid的效果是一样的
$ jcmd 4876 GC.class_histogram
4876:
num #instances #bytes class name
1: 141718 16093456 [C
2: 77395 9721744
3: 77395 5579408
4: 6261 3956752
5: 140036 3360864 java.lang.String
6: 13098 2974464 [B
7: 6261 2573432
8: 5512 2386208
|
# 查看JVM性能相关的参数
```bash
$ jcmd 4876 PerfCounter.print
4876:
java.ci.totalTime=3840798
java.cls.loadedClasses=6312
java.cls.sharedLoadedClasses=0
java.cls.sharedUnloadedClasses=0
java.cls.unloadedClasses=50
...
|
显示所有线程栈
|
$ jcmd 4876 Thread.print | more
4876:
2016-01-20 11:15:36
Full thread dump Java HotSpot(TM) Client VM (24.75-b04 mixed mode):
"http-nio-8055-exec-10" daemon prio=6 tid=0x190c0400 nid=0x1468 waiting on condition [0x1d38f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
|
dump出hprof文件
|
$ jcmd 4876 GC.heap_dump dump.bin
|
执行一次finalization操作,相当于执行java.lang.System.runFinalization()
|
$ jcmd 4876 GC.run_finalization
|
执行一次Full GC相当于执行java.lang.System.gc()
$ jcmd 4876 GC.run
参考
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/JavaJCMD/index.html
http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/jcmd.html
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html
http://hirt.se/blog/?p=211
分享到:
相关推荐
最新收集JDK命令大全 最新收集JDK命令大全 最新收集JDK命令大全
JDK命令详解JDK命令详解
jdk,常用命令详细介绍,包括语法以及用例,学会就基本上掌握了jdk
jdk命令详解
2、javac.exe: ====================== 编译的Java程序,生成.class文件 3、javaw.exe: ====================== 功能: 跟java命令相对的,可以运行.class文件,主要用来执行图形界面的java程序运行java命令时,会...
本人根据学习jdk命令 总结的一套jdk命令大全 日后还会有更新 请谅解编写仓促
Jenkinsfile调用jdk命令工具配置
Jenkinsfile调用jdk命令和maven或grandle编译命令工具配置
JDK命令经典讲解全,包括每条命令的语法以及功能说明...
在CMD中运行的JDK常用命令,很全的。
JDK命令详解,文档格式解绍JDK命令
最新收集JDK1.5.0命令大全.txt 最新收集JDK1.5.0命令大全.txt 最新收集JDK1.5.0命令大全.txt
jvm命令行工具,java性能优化,jdk命令工具, jcmd命令、jps命令、jmap命令、jstack命令、jinfo命令、jstat命令
自己整理的JDK常用命令的详解,包括各个参数的设置什么的包含 javaw java javac jar等等命令
mac for jdk1.6 jdk6 安装版 里面有两个jdk1.6的安装包,都可以用 如果电脑上安装有1.7,1.8等高版本jdk就不要再下安装包了,安装包安装会报错 命令是这个:brew install java6或 brew install homebrew/cask-...
NULL 博文链接:https://jose-bing.iteye.com/blog/1271185
JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11安装包,JDK11安装包JDK11...
本WORD中的内容主要介绍JDK的命令及相关运用
JDK的详细解释,所有的命令是怎么用的,含义是什么,都有一个很详细的解说,可以说很多Java学习者都不一定全知道啊,而且有些也是没有用过的了