学习 尚硅谷 宋红康 JVM从入门到精通 的学习笔记

概述

在jdk1.7以后,新增了这个命令行工具,jcmd,这个工具就像一个瑞士军刀一样,集成了jstat之外所有命令的功能,比如说用jcmd命令来导出堆、内存使用、查看Java进程、导出线程信息、执行GC、JVM运行时间等等。
jcmd有jmap的大部分功能,并且在Oracle的官方网上上也推荐使用jcmd命名代替jmap命令。
image.png

基本的语法

jcmd -l

列出所有的JVM进程

image.png

上面的操作就和jsp很像了

jcmd 进程号 help

针对指定的进程,有哪些命令可以使用的

image.png

jcmd 进程号 具体命令

显示指定进程的指令命令的数据

根据以上命令来替换之前的那些操作:
Thread.print 可以替换 jstack指令
GC.class_histogram 可以替换 jmap中的-histo操作
GC.heap_dump 可以替换 jmap中的-dump操作
GC.run 可以查看GC的执行情况
VM.uptime 可以查看程序的总执行时间,可以替换jstat指令中的-t操作
VM.system_properties 可以替换 jinfo -sysprops 进程id
VM.flags 可以获取JVM的配置参数信息

打印线程信息
image.png
通过 Thread.print 可以替换 jstack指令 查看程序是否有死锁
image.png


GC.heap_dump 可以替换 jmap中的-dump操作
image.png

生成堆转储文件


image.png
显示虚拟机配置的参数