常见的Java故障排除-jcmd

        jcmd实用工具用于向JVM发送诊断命令请求,这些请求主要用于控制 Java Flight Recordings,诊断和排除JVM和JAVA应用程序故障。该命令必须在JVM运行的机器上使用,同时必须是和启动JVM拥有相同权限的用户和用户组。
        更具体的jcmd语句和用法可以查看jcmd command man page。
        该命令jcmd PerfCounter.print会将程序中所有的性能计数打印出来。
        jcmd [options]会向JVM发送实际的命令。
        以下的例子是如何用jcmd向JVM发送诊断命令:

jcmd help

jcmd Thread.print

        上面这张图没有截全,感兴趣的可以自己操作下。

Useful Commands for jcmd Utility

        不同版本的HotSpot VM,可用的诊断命令可能也会不同。因此,查看可用选项的最好方式是使用 jcmd help命令。以下一些命令是在Java8中比较常用的命令。如果你想获取这些命令的额外选项可以使用 jcmd help

  • Print full HotSpot and JDK version ID
    jcmd VM.version

  • Print all the system properties set for a VM
    可能会有几百行信息被展示。
    jcmd VM.system_properties

  • Print all the flags used for a VM
    即使你没有提供任何开关,一些默认的值也会被打印出来,例如初始化的堆大小和最大的堆大小。
    jcmd VM.flags

  • Print the uptime in seconds
    jcmd VM.uptime

  • Create a class histogram
    结果会在控制台打印出来,所以你也可以将其重定向到文件中。输出列表中既包含了应用程序编写的类也包含了Java的内部类。占用内存最多的类会被罗列在最上方,按占用内存大小降序排序。
    jcmd GC.class_histogram

  • Create a heap dump (hprof dump)
    jcmd GC.heap_dump
    该用法与jmap -dump:file= 相同,不过jcmd是推荐的使用工具。

  • Create a heap histogram
    jcmd Thread.print

你可能感兴趣的:(常见的Java故障排除-jcmd)