jdk jcmd 使用
所属分类 java
浏览量 1670
JDK 1.7之后,新增命令行工具jcmd 可以用来导出堆,查看Java进程,导出线程信息,执行GC等
jcmd拥有jmap的大部分功能,Oracle官方建议使用jcmd代替jmap
类统计信息GC.class_histogram
堆转储 GC.heap_dump
获取系统Properties VM.system_properties
获取启动参数 VM.flags
获取所有性能相关数据 PerfCounter.print
查看堆外内存信息 VM.native_memory summary
查看可用命令
jcmd 41260 help
41260:
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 41260 GC.class_histogram|head -20
效果同 jmap -histo pid
查看虚拟机启动时间 VM.uptime
打印线程栈信息 Thread.print 与 jstack 一样
导出堆信息 GC.heap_dump
jcmd 41260 GC.heap_dump xxx.bin
效果同 jmap -dump:format=b,file=heapdump.phrof pid
如果只指定文件名,默认会生成在启动 JVM 的目录里
获取系统Properties内容 VM.system_properties
获取启动参数VM.flags
获取所有性能相关数据 PerfCounter.print
查看所有jvm参数
jcmd PID VM.flags -all
GC原因
执行堆dump
sun.gc.lastCause="Heap Dump Initiated GC"
执行 jcmd 41260 GC.run 之后
sun.gc.lastCause="System.gc()"
java.cls.loadedClasses=3631
java.cls.sharedLoadedClasses=0
java.cls.sharedUnloadedClasses=0
java.cls.unloadedClasses=55
java.property.java.version="1.8.0_60"
java.property.java.vm.info="mixed mode"
java.threads.daemon=22
java.threads.live=23
java.threads.livePeak=56
java.threads.started=57
jvm参数查看
上一篇
下一篇
50个经典思维助你打开思路
投资人尽职调查要点整理
MySQL InnoDB的4个特性
mysql知识点整理
架构师需要具备的能力和素质
memcached知识点整理