Java常用内存诊断命令
Java常用内存诊断命令
常用命令
jcmd jmap jinfo jstat
jcmd
jcmd 显示java进程 jcmd pid help 看某个进程的详细信息 查询heap信息 jcmd pid GC.heap_info 查看启动参数 jcmd pid VM.falgs 查询运行时间 jcmd pid VM.uptime 打印线程 jcmd pid Thread.print
jmap
遇到 Error attaching to process: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.77-b03. Target VM is 25.191-b12 sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.77-b03. Target VM is 25.191-b12
解决方案: 进入jdk 的bin目录 ./jmap pid
./jmap -heap pid 打印详细的heap信息
./jmap -histo:live pid 打印存活对象数量,以字节为单位的内存大小以及完全限定的类名称 ./jmap -histo pid 打印对象数量,以字节为单位的内存大小以及完全限定的类名称
jinfo
遇到 Error attaching to process: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.77-b03. Target VM is 25.191-b12 sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.77-b03. Target VM is 25.191-b12
解决方案: 进入jdk 的bin目录 ./jinfo pid ./jinfo -flags pid 查询java 启动参数 和 jcmd pid VM.falgs一样
jstat
常用参数
class:显示有关类加载器行为的统计信息。
compiler:显示有关Java HotSpot VM即时编译器行为的统计信息。
gc:显示有关垃圾收集堆行为的统计信息。
gccapacity:显示有关世代容量及其相应空间的统计信息。
gccause:显示有关垃圾收集统计信息的摘要(与相同-gcutil),以及上一次和当前(如果适用)垃圾收集事件的原因。
gcnew:显示新一代行为的统计信息。
gcnewcapacity:显示有关新一代大小及其相应空间的统计信息。
gcold:显示有关旧时代行为的统计信息和元空间统计信息。
gcoldcapacity:显示有关上一代的大小的统计信息。
gcmetacapacity:显示有关元空间大小的统计信息。
gcutil:显示有关垃圾收集统计信息的摘要。
printcompilation:显示Java HotSpot VM编译方法统计信息。
jstat -gc pid 1000 10 没1s 打印一次 打印10次
