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次

经验分享 程序员 微信小程序 职场和发展