【问题标题】:jcmd : where can I find complementary informationjcmd:在哪里可以找到补充信息
【发布时间】:2017-06-12 23:12:36
【问题描述】:

jcmd 是一个很有前途的工具,用于重组 jmap、jsp 等实用程序...
您可以找到introductionman page,但它仍然很轻。

在网络上,我发现像 GC.heap_info 这样的命令显然已经存在,但我从来没有用于我的测试。

其中一些命令需要特殊标志。例如,-XX:NativeMemoryTracking=detail 会给你VM.native_memory 命令。

但对于其他一些人来说,不清楚如何激活它们,或者它是否取决于 jdk 版本等。
我什至找不到现有命令的详尽列表。

有什么信息吗?


编辑 感谢@apangin response,我已经开始计算 jvm 版本可用命令的简短摘要。

免责声明:仅来自代码拆解,并非真实测试

jdk8

  • 帮助
  • VM.uptime [选项]
  • VM.flags [选项]
  • VM.system_properties
  • VM.command_line
  • VM.版本
  • VM.native_memory [选项]
  • VM.check_commercial_features
  • VM.unlock_commercial_features
  • Thread.print [选项]
  • GC.run
  • GC.run_finalization
  • GC.rotate_log
  • GC.class_stats [选项]
  • GC.class_histogram [选项]
  • GC.heap_dump [选项]
  • ManagementAgent.start_local
  • ManagementAgent.start [选项]
  • ManagementAgent.stopJFR.start [选项]
  • JFR.stop [选项]
  • JFR.dump [选项]
  • JFR.check [选项]

jdk9

只有额外的

  • VM.set_flag [选项]
  • VM.info
  • VM.class_hierarchy [选项]
  • VM.dynlibs
  • VM.print_touched_methods
  • JVMTI.data_dump
  • JVMTI.agent_load [选项]
  • GC.finalizer_info
  • GC.heap_info
  • ManagementAgent.status
  • ManagementAgent.stop
  • Compiler.queue
  • Compiler.codelist
  • Compiler.codecache
  • Compiler.directives_print
  • Compiler.directives_remove
  • Compiler.directives_add [选项]
  • Compiler.directives_clear

【问题讨论】:

    标签: java jvm


    【解决方案1】:

    基于 @EricWang's answerHotSpot diagnostic command sources 和个人经验,我创建了 JDK 8u121 中可用的 jcmd 命令的完整列表以及有关要求等的其他详细信息。


    帮助 [选项] []

    有关特定命令的更多信息,请使用help <command>。如果没有参数,这将显示可用命令的列表。 help -all 将显示所有命令的帮助。

    • 影响:低
    Arguments:
        command name : [optional] The name of the command for which we want help (STRING, no default value)
    
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        -all : [optional] Show help for all commands (BOOLEAN, false)
    

    VM.uptime [选项]

    打印虚拟机正常运行时间。

    • 影响:低
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        -date : [optional] Add a prefix with current date (BOOLEAN, false)
    

    VM.flags [选项]

    打印 VM 标志选项及其当前值。

    • 影响:低
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        -all : [optional] Print all flags supported by the VM (BOOLEAN, false)
    

    VM.system_properties

    打印系统属性。

    • 影响:低

    VM.command_line

    打印用于启动此 VM 实例的命令行。

    • 影响:低

    虚拟机版本

    打印JVM版本信息。

    • 影响:低

    VM.native_memory [选项]

    打印本机内存使用情况。

    • 影响:中等
    • 需要:-XX:NativeMemoryTracking=[summary|detail]
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        summary : [optional] request runtime to report current memory summary, which includes total reserved and committed memory, along with memory usage summary by each subsytem. (BOOLEAN, false)
        detail : [optional] request runtime to report memory allocation >= 1K by each callsite. (BOOLEAN, false)
        baseline : [optional] request runtime to baseline current memory usage, so it can be compared against in later time. (BOOLEAN, false)
        summary.diff : [optional] request runtime to report memory summary comparison against previous baseline. (BOOLEAN, false)
        detail.diff : [optional] request runtime to report memory detail comparison against previous baseline, which shows the memory allocation activities at different callsites. (BOOLEAN, false)
        shutdown : [optional] request runtime to shutdown itself and free the memory used by runtime. (BOOLEAN, false)
        statistics : [optional] print tracker statistics for tuning purpose. (BOOLEAN, false)
        scale : [optional] Memory usage in which scale, KB, MB or GB (STRING, KB)
    

    VM.check_commercial_features

    显示商业功能的状态。

    • 影响:低:无影响

    VM.unlock_commercial_features

    解锁商业功能。

    • 影响:低:无影响

    Thread.print [选项]

    使用堆栈跟踪打印所有线程。

    • 影响:中等:取决于线程数。
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        -l : [optional] print java.util.concurrent locks (BOOLEAN, false)
    

    GC.run

    调用 java.lang.System.gc()。

    • 影响:中等:取决于 Java 堆大小和内容。

    GC.run_finalization

    调用 java.lang.System.runFinalization()。

    • 影响:中等:取决于 Java 内容。

    GC.rotate_log

    强制轮转 GC 日志文件。

    • 影响:低
    • 需要:-Xloggc:&lt;filename&gt; -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=&lt;num&gt;

    GC.class_stats [选项] []

    提供有关 Java 类元数据的统计信息。

    • 影响:高:取决于 Java 堆大小和内容。
    • 要求:-XX:+UnlockDiagnosticVMOptions
    Arguments:
        columns : [optional] Comma-separated list of all the columns to show. If not specified, the following columns are shown: InstBytes,KlassBytes,CpAll,annotations,MethodCount,Bytecodes,MethodAll,ROAll,RWAll,Total (STRING, no default value)
    
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        -all : [optional] Show all columns (BOOLEAN, false)
        -csv : [optional] Print in CSV (comma-separated values) format for spreadsheets (BOOLEAN, false)
        -help : [optional] Show meaning of all the columns (BOOLEAN, false)
    

    GC.class_histogram [选项]

    提供有关 Java 堆使用情况的统计信息。

    • 影响:高:取决于 Java 堆大小和内容。
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        -all : [optional] Inspect all objects, including unreachable objects (BOOLEAN, false)
    

    GC.heap_dump [选项]

    生成 Java 堆的 HPROF 格式转储。

    • 影响:高:取决于 Java 堆大小和内容。除非指定了 -all 选项,否则请求完整的 GC。
    Arguments:
        filename : Name of the dump file (STRING, no default value)
    
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        -all : [optional] Dump all objects, including unreachable objects (BOOLEAN, false)
    

    ManagementAgent.start_local

    启动本地管理代理。

    • 影响:低:无影响

    ManagementAgent.start [选项]

    启动远程管理代理。

    • 影响:低:无影响
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        config.file : [optional] set com.sun.management.config.file (STRING, no default value)
        jmxremote.host : [optional] set com.sun.management.jmxremote.host (STRING, no default value)
        jmxremote.port : [optional] set com.sun.management.jmxremote.port (STRING, no default value)
        jmxremote.rmi.port : [optional] set com.sun.management.jmxremote.rmi.port (STRING, no default value)
        jmxremote.ssl : [optional] set com.sun.management.jmxremote.ssl (STRING, no default value)
        jmxremote.registry.ssl : [optional] set com.sun.management.jmxremote.registry.ssl (STRING, no default value)
        jmxremote.authenticate : [optional] set com.sun.management.jmxremote.authenticate (STRING, no default value)
        jmxremote.password.file : [optional] set com.sun.management.jmxremote.password.file (STRING, no default value)
        jmxremote.access.file : [optional] set com.sun.management.jmxremote.access.file (STRING, no default value)
        jmxremote.login.config : [optional] set com.sun.management.jmxremote.login.config (STRING, no default value)
        jmxremote.ssl.enabled.cipher.suites : [optional] set com.sun.management.jmxremote.ssl.enabled.cipher.suite (STRING, no default value)
        jmxremote.ssl.enabled.protocols : [optional] set com.sun.management.jmxremote.ssl.enabled.protocols (STRING, no default value)
        jmxremote.ssl.need.client.auth : [optional] set com.sun.management.jmxremote.need.client.auth (STRING, no default value)
        jmxremote.ssl.config.file : [optional] set com.sun.management.jmxremote.ssl_config_file (STRING, no default value)
        jmxremote.autodiscovery : [optional] set com.sun.management.jmxremote.autodiscovery (STRING, no default value)
        jdp.port : [optional] set com.sun.management.jdp.port (INT, no default value)
        jdp.address : [optional] set com.sun.management.jdp.address (STRING, no default value)
        jdp.source_addr : [optional] set com.sun.management.jdp.source_addr (STRING, no default value)
        jdp.ttl : [optional] set com.sun.management.jdp.ttl (INT, no default value)
        jdp.pause : [optional] set com.sun.management.jdp.pause (INT, no default value)
        jdp.name : [optional] set com.sun.management.jdp.name (STRING, no default value)
    

    ManagementAgent.stop

    停止远程管理代理。

    • 影响:低:无影响

    JFR.start [选项]

    开始新的 JFR 录制

    • 影响:中等:根据录制设置,影响范围从低到高。
    • 需要:-XX:+UnlockCommercialFeatures
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        name : [optional] Name that can be used to identify recording, e.g. "My Recording" (STRING, no default value)
        defaultrecording : [optional] Starts the default recording, can only be combined with settings. (BOOLEAN, false)
        dumponexit : [optional] Dump running recording when JVM shuts down (BOOLEAN, no default value)
        settings : [optional] Settings file(s), e.g. profile or default. See JRE_HOME/lib/jfr (STRING SET, no default value)
        delay : [optional] Delay recording start with (s)econds, (m)inutes), (h)ours), or (d)ays, e.g. 5h. (NANOTIME, 0)
        duration : [optional] Duration of recording in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 300s. (NANOTIME, 0)
        filename : [optional] Resulting recording filename, e.g. "C:\Users\user\My Recording.jfr" (STRING, no default value)
        compress : [optional] GZip-compress the resulting recording file (BOOLEAN, false)
        maxage : [optional] Maximum time to keep recorded data (on disk) in (s)econds, (m)inutes, (h)ours, or (d)ays, e.g. 60m, or 0 for no limit (NANOTIME, 0)
        maxsize : [optional] Maximum amount of bytes to keep (on disk) in (k)B, (M)B or (G)B, e.g. 500M, or 0 for no limit (MEMORY SIZE, 0)
    

    JFR.stop [选项]

    停止 JFR 记录

    • 影响:低
    • 需要:-XX:+UnlockCommercialFeatures
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        name : [optional] Recording name,.e.g "My Recording" (STRING, no default value)
        recording : [optional] Recording number, see JFR.check for a list of available recordings (JLONG, -1)
        discard : [optional] Skip writing data to previously specified file (if any) (BOOLEAN, false)
        filename : [optional] Copy recording data to file, e.g. "C:\Users\user\My Recording.jfr" (STRING, no default value)
        compress : [optional] GZip-compress "filename" destination (BOOLEAN, false)
    

    JFR.dump [选项]

    将 JFR 录音的内容复制到文件中。必须指定名称或录制 ID。

    • 影响:低
    • 需要:-XX:+UnlockCommercialFeatures
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        name : [optional] Recording name, e.g. "My Recording" (STRING, no default value)
        recording : [optional] Recording number, use JFR.check to list available recordings (JLONG, -1)
        filename :  Copy recording data to file, i.e "C:\Users\user\My Recording.jfr" (STRING, no default value)
        compress : [optional] GZip-compress "filename" destination (BOOLEAN, false)
    

    JFR.check [选项]

    检查正在运行的 JFR 记录

    • 影响:低
    • 要求:-XX:+UnlockCommercialFeatures
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        name : [optional] Recording name, e.g. "My Recording" or omit to see all recordings (STRING, no default value)
        recording : [optional] Recording number, or omit to see all recordings (JLONG, -1)
        verbose : [optional] Print event settings for the recording(s) (BOOLEAN, false)
    

    【讨论】:

    • 我想这意味着你从这里开始我在其他地方找不到的文档? ^^
    • @Romain 是的,因为我也没有看到所有这些信息都收集在一起。
    • 我继续你的工作,以更简洁的形式,使用 jdk9 Btw,谢谢你帮我指出热点源中的那条信息!
    【解决方案2】:

    jcmd 本身在应用于特定 Java 进程时提供此类信息,并且可以选择特定子命令。

    如何获得帮助:

    • 首先通过jpsjcmd -l获取java进程列表,如果你还不知道目标java进程的pid,(例如我会用pid的java进程8976 作为后续步骤中的示例)。
    • 然后将help子命令应用于特定的java进程,例如jcmd 8976 help,它将列出该进程可用的子命令。
    • 然后,获取进程中特定命令的帮助,例如jcmd 8976 help Thread.print,它将打印Thread.print子命令的帮助。
    • 然后,对进程执行特定的子命令,例如jcmd 8976 Thread.printjcmd 8976 Thread.print | less -N

    顺便说一句,正如你提到的,以下链接简要描述了 jcmd 命令:https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html

    【讨论】:

    • jcmd &lt;pid&gt; help -all 将列出可用命令和概要。
    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多