jcmd : where can I find complementary information

后端 未结 2 837
臣服心动
臣服心动 2021-02-08 11:50

jcmd is a promising tool regrouping utilities of jmap, jsp, etc...
You can find introduction and man page but still it\'s very light.

On the web, I

相关标签:
2条回答
  • 2021-02-08 12:04

    Basing on @EricWang's answer, HotSpot diagnostic command sources and the personal experience, I've created the full list of jcmd commands available in JDK 8u121 with the additional details about requirements etc.


    help [options] [<command name>]

    For more information about a specific command use help <command>. With no argument this will show a list of available commands. help -all will show help for all commands.

    • Impact: Low
    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]

    Print VM uptime.

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

    VM.flags [options]

    Print VM flag options and their current values.

    • Impact: Low
    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

    Print system properties.

    • Impact: Low

    VM.command_line

    Print the command line used to start this VM instance.

    • Impact: Low

    VM.version

    Print JVM version information.

    • Impact: Low

    VM.native_memory [options]

    Print native memory usage.

    • Impact: Medium
    • Requires: -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

    Display status of commercial features.

    • Impact: Low: No impact

    VM.unlock_commercial_features

    Unlock commercial features.

    • Impact: Low: No impact

    Thread.print [options]

    Print all threads with stacktraces.

    • Impact: Medium: Depends on the number of threads.
    Options: (options must be specified using the <key> or <key>=<value> syntax)
        -l : [optional] print java.util.concurrent locks (BOOLEAN, false)
    

    GC.run

    Call java.lang.System.gc().

    • Impact: Medium: Depends on Java heap size and content.

    GC.run_finalization

    Call java.lang.System.runFinalization().

    • Impact: Medium: Depends on Java content.

    GC.rotate_log

    Force the GC log file to be rotated.

    • Impact: Low
    • Requires: -Xloggc:<filename> -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=<num>

    GC.class_stats [options] [<columns>]

    Provide statistics about Java class meta data.

    • Impact: High: Depends on Java heap size and content.
    • Requires: -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 [options]

    Provide statistics about the Java heap usage.

    • Impact: High: Depends on Java heap size and content.
    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 [options] <filename>

    Generate a HPROF format dump of the Java heap.

    • Impact: High: Depends on Java heap size and content. Request a full GC unless the -all option is specified.
    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

    Start local management agent.

    • Impact: Low: No impact

    ManagementAgent.start [options]

    Start remote management agent.

    • Impact: Low: No impact
    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

    Stop remote management agent.

    • Impact: Low: No impact

    JFR.start [options]

    Starts a new JFR recording

    • Impact: Medium: Depending on the settings for a recording, the impact can range from low to high.
    • Requires: -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 [options]

    Stops a JFR recording

    • Impact: Low
    • Requires: -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 [options]

    Copies contents of a JFR recording to file. Either the name or the recording id must be specified.

    • Impact: Low
    • Requires: -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 [options]

    Checks running JFR recording(s)

    • Impact: Low
    • Requires: -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)
    
    0 讨论(0)
  • 2021-02-08 12:05

    jcmd itself provides such information when applied on a specific Java process, and optionally a specific sub command.

    How to get help:

    • First get java process lists via jps or jcmd -l, if you don't know the pid of target java process yet, (e.g I will take java process with pid 8976 as example in subsequent steps).
    • Then apply help sub command on a specific java process, e.g jcmd 8976 help, it will list available sub commands for the process.
    • Then, get help for a specific command on the process, e.g jcmd 8976 help Thread.print, it will print help of Thread.print sub command.
    • Then, execute the specific sub command on the process, e.g jcmd 8976 Thread.print or jcmd 8976 Thread.print | less -N

    By the way, just as you mentioned, following link describes jcmd command briefly: https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr006.html

    0 讨论(0)
提交回复
热议问题