学习 尚硅谷 宋红康 JVM从入门到精通 的学习笔记
概述
在jdk1.7以后,新增了这个命令行工具,jcmd,这个工具就像一个瑞士军刀一样,集成了jstat之外所有命令的功能,比如说用jcmd命令来导出堆、内存使用、查看Java进程、导出线程信息、执行GC、JVM运行时间等等。
jcmd有jmap的大部分功能,并且在Oracle的官方网上上也推荐使用jcmd命名代替jmap命令。
基本的语法
jcmd -l
列出所有的JVM进程
上面的操作就和jsp很像了
jcmd 进程号 help
针对指定的进程,有哪些命令可以使用的
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的配置参数信息
打印线程信息
通过 Thread.print 可以替换 jstack指令 查看程序是否有死锁
GC.heap_dump 可以替换 jmap中的-dump操作
生成堆转储文件
显示虚拟机配置的参数