美文网首页
常见的Java故障排除-jcmd

常见的Java故障排除-jcmd

作者: 风吹柳_柳随风 | 来源:发表于2019-06-26 14:56 被阅读0次

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

    jcmd <pid> help jcmd <pid> Thread.print

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

    Useful Commands for jcmd Utility

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

    • Print full HotSpot and JDK version ID
      jcmd <process id/main class> VM.version

    • Print all the system properties set for a VM
      可能会有几百行信息被展示。
      jcmd <process id/main class> VM.system_properties

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

    • Print the uptime in seconds
      jcmd <process id/main class> VM.uptime

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

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

    • Create a heap histogram
      jcmd <process id/main class> Thread.print

    相关文章

      网友评论

          本文标题:常见的Java故障排除-jcmd

          本文链接:https://www.haomeiwen.com/subject/rzsqcctx.html