JCMD(1)
๐ NAME ๐
jcmd โ from the JDK Commands crew, aka the JCMD(1) manual โ sends diagnostic command requests to a running Java Virtual Machine (JVM). ๐
โจ
โจ SYNOPSIS โจ
jcmd [pid | main-class] command... | PerfCounter.print | -f filename
jcmd [-l]
jcmd -h
pidโ When used, thejcmdutility sends the diagnostic command request to the process ID for the Java process.main-classโ When used, thejcmdutility sends the diagnostic command request to all Java processes with the specified name of the main class.commandโ The command must be a validjcmdcommand for the selected JVM. The list of available commands forjcmdis obtained by running thehelpcommand (jcmd pid help) wherepidis the process ID for the running Java process. If thepidis0, commands will be sent to all Java processes. Themain-classargument will be used to match, either partially or fully, the class used to start Java. If no options are given, it lists the running Java process identifiers with the main class and command-line arguments that were used to launch the process (the same as using-l).Perfcounter.printโ Prints the performance counters exposed by the specified Java process.-ffilename โ Reads and executes commands from a specified file, filename.-lโ Displays the list of Java Virtual Machine process identifiers that are not running in a separate docker process along with the main class and command-line arguments that were used to launch the process. If the JVM is in a docker process, you must use tools such aspsto look up the PID.
Note: Usingjcmdwithout arguments is the same as usingjcmd -l.
-hโ Displays thejcmdutility's command-line help.
๐ธ DESCRIPTION ๐ธ
Okay so the jcmd utility is used to send diagnostic command requests to the JVM. Important vibe check: it must be used on the same machine on which the JVM is running, and it has to have the same effective user and group identifiers that were used to launch the JVM. ๐
Each diagnostic command has its own set of arguments. To display the description, syntax, and a list of available arguments for a diagnostic command, use the name of the command as the argument. For example:
jcmd pid help command
If arguments contain spaces, then you must surround them with single or double quotation marks (' or "). In addition, you must escape single or double quotation marks with a backslash (\) to prevent the operating system shell from processing quotation marks. Alternatively, you can surround these arguments with single quotation marks and then with double quotation marks (or with double quotation marks and then with single quotation marks). ๐โจ
If you specify the process identifier (pid) or the main class (main-class) as the first argument, then the jcmd utility sends the diagnostic command request to the Java process with the specified identifier or to all Java processes with the specified name of the main class. You can also send the diagnostic command request to all available Java processes by specifying 0 as the process identifier. ๐ซถ
๐ COMMANDS FOR JCMD ๐
The command must be a valid jcmd diagnostic command for the selected JVM. The list of available commands for jcmd is obtained by running the help command (jcmd pid help) where pid is the process ID for a running Java process. If the pid is 0, commands will be sent to all Java processes. The main-class argument will be used to match, either partially or fully, the class used to start Java. If no options are given, it lists the running Java process identifiers that are not in separate docker processes along with the main class and command-line arguments that were used to launch the process (the same as using -l). ๐
The following commands are available:
๐ฌ help [options] [arguments]
For more information about a specific command.
arguments:
command name: The name of the command for which we want help (STRING, no default value)
Note: The following options must be specified using either key or key=value syntax.
options:
-all: (Optional) Show help for all commands (BOOLEAN, false) .
๐ง Compiler.codecache
Prints code cache layout and bounds.
Impact: Low
๐ Compiler.codelist
Prints all compiled methods in code cache that are alive.
Impact: Medium
๐ง Compiler.perfmap (Linux only)
Write map file for Linux perf tool.
Impact: Low
๐งต Compiler.queue
Prints methods queued for compilation.
Impact: Low
๐ ๏ธ Compiler.directives_add filename arguments
Adds compiler directives from a file.
Impact: Low
arguments:
filename: The name of the directives file (STRING, no default value)
๐งน Compiler.directives_clear
Remove all compiler directives.
Impact: Low
๐จ๏ธ Compiler.directives_print
Prints all active compiler directives.
Impact: Low
โ๏ธ Compiler.directives_remove
Remove latest added compiler directive.
Impact: Low
๐ GC.class_histogram [options]
Provides statistics about the Java heap usage.
Impact: High --- depends on Java heap size and content.
Note: The options must be specified using either key or key=value syntax.
options:
-all: (Optional) Inspects all objects, including unreachable objects (BOOLEAN, false)-parallel: (Optional) Number of parallel threads to use for heap inspection.0(the default) means let the VM determine the number of threads to use.1means use one thread (disable parallelism). For any other value the VM will try to use the specified number of threads, but might use fewer. (INT, 0)
๐ชฆ GC.finalizer_info
Provides information about the Java finalization queue.
Impact: Medium
๐๏ธ GC.heap_dump [options] [arguments]
Generates a HPROF format dump of the Java heap.
Impact: High --- depends on the Java heap size and content. Request a full GC unless the -all option is specified.
Note: The following options must be specified using either key or key=value syntax.
options:
-all: (Optional) Dump all objects, including unreachable objects (BOOLEAN, false)-gz: (Optional) If specified, the heap dump is written in gzipped format using the given compression level.1(recommended) is the fastest,9the strongest compression. (INT, 1)-overwrite: (Optional) If specified, the dump file will be overwritten if it exists (BOOLEAN, false)
arguments:
filename: The name of the dump file (STRING, no default value)
๐งบ GC.heap_info
Provides generic Java heap information.
Impact: Medium
๐ GC.run
Calls java.lang.System.gc().
Impact: Medium --- depends on the Java heap size and content.
๐ GC.run_finalization
Calls java.lang.System.runFinalization().
Impact: Medium --- depends on the Java content.
๐ฅ JFR.check [options]
Show information about a running flight recording
Impact: Low
Note: The options must be specified using either key or key=value syntax. If no parameters are entered, information for all active recordings is shown.
options:
name: (Optional) Name of the flight recording. (STRING, no default value)verbose: (Optional) Flag for printing the event settings for the recording (BOOLEAN, false)
โ๏ธ JFR.configure [options]
Set the parameters for a flight recording
Impact: Low
Note: The options must be specified using either key or key=value syntax. If no parameters are entered, the current settings are displayed.
options:
globalbuffercount: (Optional) Number of global buffers. This option is a legacy option: change thememorysizeparameter to alter the number of global buffers. This value cannot be changed once JFR has been initialized. (STRING, default determined by the value formemorysize)globalbuffersize: (Optional) Size of the global buffers, in bytes. This option is a legacy option: change thememorysizeparameter to alter the size of the global buffers. This value cannot be changed once JFR has been initialized. (STRING, default determined by the value formemorysize)maxchunksize: (Optional) Maximum size of an individual data chunk in bytes if one of the following suffixes is not used:'m'or'M'for megabytes OR'g'or'G'for gigabytes. This value cannot be changed once JFR has been initialized. (STRING, 12M)memorysize: (Optional) Overall memory size, in bytes if one of the following suffixes is not used:'m'or'M'for megabytes OR'g'or'G'for gigabytes. This value cannot be changed once JFR has been initialized. (STRING, 10M)repositorypath: (Optional) Path to the location where recordings are stored until they are written to a permanent file. (STRING, The default location is the temporary directory for the operating system. On Linux operating systems, the temporary directory is/tmp. On Windwows, the temporary directory is specified by theTMPenvironment variable.)preserve-repository={true|false}: Specifies whether files stored in the disk repository should be kept after the JVM has exited. If false, files are deleted. By default, this parameter is disabled.stackdepth: (Optional) Stack depth for stack traces. Setting this value greater than the default of64may cause a performance degradation. This value cannot be changed once JFR has been initialized. (LONG, 64)thread_buffer_size: (Optional) Local buffer size for each thread in bytes if one of the following suffixes is not used:'k'or'K'for kilobytes or'm'or'M'for megabytes. Overriding this parameter could reduce performance and is not recommended. This value cannot be changed once JFR has been initialized. (STRING, 8k)samplethreadsโ (optional) the flag that turns thread sampling ON. (BOOLEAN,true)
๐พ JFR.dump [options]
Writes data out to a file while a flight recording is actively running. Impact: Low.
Heads up bestie: you gotta pass the options using eitherkeyorkey=valuesyntax. No options are required though. And the recording keeps running after the data gets written โ it does not stop, okay? ๐
options:
beginโ (optional) tells it the time from which recording data gets included in the dump file. The format is specified as local time. (STRING, no default value)endโ (optional) tells it the time to which recording data gets included in the dump file. The format is specified as local time. (STRING, no default value)
โญ Note: for bothbeginandend, the time has to be in a format thatjava.time.LocalTime::parse(STRING),java.time.LocalDateTime::parse(STRING)orjava.time.Instant::parse(STRING)can read. Like for example"13:20:15","2020-03-17T09:00:00"or"2020-03-17T09:00:00Z".
๐ธ Note: thebeginandendtimes correspond to the timestamps found within the recorded information in the flight recording data.
Another option (yes there's more, we love options) is a time relative to the current time โ you specify it with a negative integer followed by "s", "m" or "h". For example "-12h", "-15m" or "-30s".
filenameโ (optional) the name of the file the flight recording data gets dumped to. If you don't give a filename, one gets generated from the PID and the current date. The filename can also be a directory, in which case the filename is generated from the PID and the current date inside that specified directory. If%pand/or%tshows up in the filename, it expands to the JVM's PID and the current timestamp, respectively. (STRING, no default value) ๐maxageโ (optional) how long we're dumping the flight recording data to a file for. (INTEGER followed by's'for seconds,'m'for minutes or'h'for hours, no default value)maxsizeโ (optional) the maximum size for the amount of data to dump from a flight recording, in bytes โ unless you use one of these suffixes:'m'or'M'for megabytes OR'g'or'G'for gigabytes. (STRING, no default value)nameโ (optional) the name of the recording. If no name is given, data from all recordings gets dumped. (STRING, no default value)path-to-gc-rootโ (optional) flag for saving the path to garbage collection (GC) roots at the moment the recording data is dumped. That path info is genuinely useful for finding memory leaks, BUT collecting it can make the application pause for a short period of time ๐ญ. So only turn this flag on when you've got an application you suspect has a memory leak. (BOOLEAN,false)
โถ๏ธ JFR.start [options]
Starts a flight recording. Impact: Low.
Note: options must be specified using eitherkeyorkey=valuesyntax. If you enter no parameters at all, a recording is started with the default values. Periodt.
options:
delayโ (optional) how long to wait before starting to record. (INTEGER followed by's'for seconds,'m'for minutes or'h'for hours,0s)diskโ (optional) flag for also writing the data to disk while recording. (BOOLEAN,true)dumponexitโ (optional) flag for writing the recording to disk when the Java Virtual Machine (JVM) shuts down. If it's set to'true'and no value is given forfilename, the recording is written to a file in the directory where the process was started. The file name is a system-generated name containing the process ID, the recording ID and the current time stamp. (For example:id-1-2019_12_12_10_41.jfr) (BOOLEAN,false)durationโ (optional) how long to record for. Note that0smeans forever. (INTEGER followed by's'for seconds,'m'for minutes or'h'for hours,0s)filenameโ (optional) the name of the file the flight recording data gets written to when the recording is stopped. If no filename is given, one is generated from the PID and the current date and placed in the directory where the process was started. The filename can also be a directory, in which case the filename is generated from the PID and the current date in that specified directory. If%pand/or%tshows up in the filename, it expands to the JVM's PID and the current timestamp, respectively. (STRING, no default value) โจmaxageโ (optional) the maximum time to keep the recorded data on disk. This parameter is only valid when thediskparameter is set totrue. Note0smeans forever. (INTEGER followed by's'for seconds,'m'for minutes or'h'for hours,0s)maxsizeโ (optional) the maximum size of the data to keep on disk, in bytes โ unless one of these suffixes is used:'m'or'M'for megabytes OR'g'or'G'for gigabytes. This parameter is only valid when thediskparameter is set to'true'. The value must not be less than the value for themaxchunksizeparameter set with theJFR.configurecommand. (STRING,0(no maximum size))nameโ (optional) the name of the recording. If no name is provided, a name gets generated. Make note of the generated name shown in the response to the command so you can use it with other commands โ write it down bestie, seriously. (STRING, system-generated default name)path-to-gc-rootโ (optional) flag for saving the path to garbage collection (GC) roots at the end of a recording. The path info is useful for finding memory leaks but collecting it is time consuming ๐. Only turn this flag on when you've got an application you suspect has a memory leak. If thesettingsparameter is set to'profile', then the information collected includes the stack trace from where the potential leaking object was allocated. (BOOLEAN,false)settingsโ (optional) the name of the settings file that identifies which events to record. To specify more than one file, separate the names with a comma (,). Include the path if the file isn't inJAVA-HOME/lib/jfr. The following profiles ship with the JDK in theJAVA-HOME/lib/jfrdirectory:'default.jfc'โ collects a predefined set of information with low overhead, so it has minimal impact on performance and can be used with recordings that run continuously;'profile.jfc'โ provides more data than the'default.jfc'profile, but with more overhead and impact on performance. Use this configuration for short periods of time when you need more information. Usenoneto start a recording without a predefined configuration file. (STRING,JAVA-HOME/lib/jfr/default.jfc) ๐
Event settings and .jfc options can be specified using the following syntax:
optionโ (optional) specifies the option value to modify. To list available options, use theJAVA_HOME/bin/jfrtool.event-settingโ (optional) specifies the event setting value to modify. Use the form:<event-name>#<setting-name>=<value>To add a new event setting, prefix the event name with'+'.
You can specify values for multiple event settings and .jfc options by separating them with a whitespace. In case of a conflict between a parameter and a .jfc option, the parameter takes precedence. The whitespace delimiter can be omitted for timespan values, i.e. 20ms. For more info about the settings syntax, see the Javadoc of the jdk.jfr package. ๐ฆ
โน๏ธ JFR.stop [options]
Stops a flight recording. Impact: Low.
Note: options must be specified using eitherkeyorkey=valuesyntax. If you enter no parameters, then no recording is stopped. (Yes, that means nothing happens. The vibe check failed. ๐)
options:
filenameโ (optional) the name of the file the recording is written to when the recording is stopped. If%pand/or%tshows up in the filename, it expands to the JVM's PID and the current timestamp, respectively. If no path is provided, the data from the recording is discarded. (STRING, no default value)nameโ (optional) the name of the recording. (STRING, no default value)
๐งฉ JVMTI.agent_load [arguments]
Loads a JVMTI native agent. Impact: Low.
arguments:
library pathโ absolute path of the JVMTI agent to load. (STRING, no default value)agent optionโ (optional) option string to pass to the agent. (STRING, no default value)
๐๏ธ JVMTI.data_dump
Signals the JVM to do a data-dump request for JVMTI. Impact: High. ๐ฅ
๐ก ManagementAgent.start [options]
Starts the remote management agent. Impact: Low --- no impact.
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
config.fileโ (optional) setscom.sun.management.config.file(STRING, no default value)jmxremote.hostโ (optional) setscom.sun.management.jmxremote.host(STRING, no default value)jmxremote.portโ (optional) setscom.sun.management.jmxremote.port(STRING, no default value)jmxremote.rmi.portโ (optional) setscom.sun.management.jmxremote.rmi.port(STRING, no default value)jmxremote.sslโ (optional) setscom.sun.management.jmxremote.ssl(STRING, no default value)jmxremote.registry.sslโ (optional) setscom.sun.management.jmxremote.registry.ssl(STRING, no default value)jmxremote.authenticateโ (optional) setscom.sun.management.jmxremote.authenticate(STRING, no default value)jmxremote.password.fileโ (optional) setscom.sun.management.jmxremote.password.file(STRING, no default value)jmxremote.access.fileโ (optional) setscom.sun.management.jmxremote.access.file(STRING, no default value)jmxremote.login.configโ (optional) setscom.sun.management.jmxremote.login.config(STRING, no default value)jmxremote.ssl.enabled.cipher.suitesโ (optional) setscom.sun.management.๐ (yes bestie, that's literally where the page cuts it off, don't come for me)jmxremote.ssl.enabled.cipher.suiteโ (STRING, no default value)jmxremote.ssl.enabled.protocolsโ (optional) setscom.sun.management.jmxremote.ssl.enabled.protocols(STRING, no default value)jmxremote.ssl.need.client.authโ (optional) setscom.sun.management.jmxremote.need.client.auth(STRING, no default value)jmxremote.ssl.config.fileโ (optional) setscom.sun.management.jmxremote.ssl_config_file(STRING, no default value)jmxremote.autodiscoveryโ (optional) setscom.sun.management.jmxremote.autodiscovery(STRING, no default value)jdp.portโ (optional) setscom.sun.management.jdp.port(INT, no default value)jdp.addressโ (optional) setscom.sun.management.jdp.address(STRING, no default value)jdp.source_addrโ (optional) setscom.sun.management.jdp.source_addr(STRING, no default value)jdp.ttlโ (optional) setscom.sun.management.jdp.ttl(INT, no default value)jdp.pauseโ (optional) setscom.sun.management.jdp.pause(INT, no default value)jdp.nameโ (optional) setscom.sun.management.jdp.name(STRING, no default value)
๐ฑ ManagementAgent.start_local
Starts the local management agent. Little guy stays in his lane, on his own machine. ๐
Impact: Low --- no impact
๐ ManagementAgent.status
Prints the management agent status. Like a vibe check but for your agent, y'know? ๐
Impact: Low --- no impact
๐ ManagementAgent.stop
Stops the remote management agent. Bye bestie, go home. ๐
Impact: Low --- no impact
๐ง System.native_heap_info (Linux only)
Prints info about native heap usage, and it does it through malloc_info(3). Linux girlies only, sorry. ๐ง
Impact: Low
โ๏ธ System.trim_native_heap (Linux only)
Attempts to free up memory by trimming the C-heap. It's giving "cleaning out your closet" energy. ๐งน
Impact: Low
๐งต Thread.print [options]
Prints all the threads, stacktraces and all. Every single one. No thread left behind. ๐
Impact: Medium --- depends on the number of threads.
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
-eโ (optional) print extended thread information (BOOLEAN, false)-lโ (optional) printsjava.util.concurrentlocks (BOOLEAN, false)
๐ฆ VM.cds [arguments]
Dumps a static or dynamic shared archive that includes all currently loaded classes.
Impact: Medium --- pause time depends on number of loaded classes
arguments:
subcmdโ must be eitherstatic_dumpordynamic_dump(STRING, no default value)filenameโ (optional) name of the shared archive to be dumped (STRING, no default value)
If filename isn't specified, a default file name gets chosen using the pid of the target JVM process. Like, for example: java_pid1234_static.jsa, java_pid5678_dynamic.jsa, etc. ๐ท๏ธ
If filename isn't specified as an absolute path, the archive file gets created in a directory relative to the current directory of the target JVM process. (So yes, watch your cwd, bestie ๐)
If dynamic_dump is specified, the target JVM must be started with the JVM option -XX:+RecordDynamicDumpInfo. Non-negotiable, no cap.
๐ช VM.classloaders [options]
Prints the classloader hierarchy. It's loaders all the way down. ๐ข
Impact: Medium --- depends on number of class loaders and classes loaded.
The following options must be specified using either key or key=value syntax.
options:
show-classesโ (optional) print loaded classes. (BOOLEAN, false)verboseโ (optional) print detailed information. (BOOLEAN, false)foldโ (optional) show loaders of the same name and class as one. (BOOLEAN, true)
๐ VM.classloader_stats
Prints statistics about all the ClassLoaders. Numbers everywhere, we love to see it. โจ
Impact: Low
๐ณ VM.class_hierarchy [options] [arguments]
Prints a list of all loaded classes, indented to show the class hierarchy. Each class name is followed by the ClassLoaderData* of its ClassLoader, or "null" if it's loaded by the bootstrap class loader. Very demure, very tree-shaped. ๐ฒ
Impact: Medium --- depends on the number of loaded classes.
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
-iโ (optional) inherited interfaces should be printed. (BOOLEAN, false)-sโ (optional) if a classname is specified, print its subclasses in addition to its superclasses. Without this option only the superclasses will be printed. (BOOLEAN, false)
arguments:
classnameโ (optional) the name of the class whose hierarchy should be printed. If not specified, all class hierarchies are printed. (STRING, no default value)
๐ป VM.command_line
Prints the command line used to start this VM instance. Receipts! ๐งพ
Impact: Low
๐ VM.dynlibs
Prints the loaded dynamic libraries. All of 'em. ๐๏ธ
Impact: Low
๐ VM.events [options]
Prints VM event logs. The lore. ๐
Impact: Low --- depends on event log size.
options:
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
logโ (optional) name of log to be printed. If omitted, all logs are printed. (STRING, no default value)maxโ (optional) maximum number of events to be printed (newest first). If omitted, all events are printed. (STRING, no default value)
โน๏ธ VM.info
Prints information about the JVM environment and status. Just a little info dump, as a treat. ๐ซถ
Impact: Low
๐ชต VM.log [options]
Lists current log configuration, enables/disables/configures a log output, or rotates all logs. Multi-talented fr.
Impact: Low
options:
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
outputโ (optional) the name or index (#) of output to configure. (STRING, no default value)output_optionsโ (optional) options for the output. (STRING, no default value)whatโ (optional) configures what tags to log. (STRING, no default value )decoratorsโ (optional) configures which decorators to use. Use'none'or an empty value to remove all. (STRING, no default value)disableโ (optional) turns off all logging and clears the log configuration. (BOOLEAN, no default value)listโ (optional) lists current log configuration. (BOOLEAN, no default value)rotateโ (optional) rotates all logs. (BOOLEAN, no default value)
๐ฉ VM.flags [options]
Prints the VM flag options and their current values. Flag reveal. ๐
Impact: Low
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
-allโ (optional) prints all flags supported by the VM (BOOLEAN, false).
๐งฌ VM.metaspace [options]
Prints the statistics for the metaspace. Big numbers, tiny space. ๐ช
Impact: Medium --- depends on number of classes loaded.
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
basicโ (optional) prints a basic summary (does not need a safepoint). (BOOLEAN, false)show-loadersโ (optional) shows usage by class loader. (BOOLEAN, false)show-classesโ (optional) ifshow-loadersis set, shows loaded classes for each loader. (BOOLEAN, false)by-chunktypeโ (optional) break down numbers by chunk type. (BOOLEAN, false)by-spacetypeโ (optional) break down numbers by loader type. (BOOLEAN, false)vslistโ (optional) shows details about the underlying virtual space. (BOOLEAN, false)scaleโ (optional) memory usage in which to scale. Valid values are:1,KB,MBorGB(fixed scale) or"dynamic"for a dynamically chosen scale. (STRING, dynamic)
๐งฎ VM.native_memory [options]
Prints native memory usage. It's giving budgeting-app-for-your-VM. ๐ธ
Impact: Medium
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
summaryโ (optional) requests runtime to report current memory summary, which includes total reserved and committed memory, along with memory usage summary by each subsystem. (BOOLEAN, false)detailโ (optional) requests runtime to report memory allocation>= 1Kby each callsite. (BOOLEAN, false)baselineโ (optional) requests runtime to baseline current memory usage, so it can be compared against in later time. (BOOLEAN, false)summary.diffโ (optional) requests runtime to report memory summary comparison against previous baseline. (BOOLEAN, false)detail.diffโ (optional) requests runtime to report memory detail comparison against previous baseline, which shows the memory allocation activities at different callsites. (BOOLEAN, false)statisticsโ (optional) prints tracker statistics for tuning purpose. (BOOLEAN, false)scaleโ (optional) memory usage in which scale,KB,MBorGB(STRING, KB)
๐ VM.print_touched_methods
Prints all methods that have ever been touched during the lifetime of this JVM. Every single one it's ever laid hands on, no cap. ๐ซต
Impact: Medium --- depends on Java content.
๐๏ธ VM.set_flag [arguments]
Sets the VM flag option by using the provided value. You're the one with the aux now. ๐ง
Impact: Low
arguments:
flag nameโ the name of the flag that you want to set (STRING, no default value)string valueโ (optional) the value that you want to set (STRING, no default value)
๐งถ VM.stringtable [options]
Dumps the string table. All your little strings, in one place. ๐
Impact: Medium --- depends on the Java content.
Note:
-verboseโ (Optional) dumps the content of each string in the table (BOOLEAN,false) ๐งต
VM.symboltable [options] ๐ซ
Dumps the symbol table, bestie. That's the whole vibe.
Impact: Medium โ literally depends on the Java content, so likeโฆ it varies ๐
Note: the following options must be specified using eitherkeyorkey=valuesyntax (yes, the original has a stray)there โ she's quirky like that ๐).
options:
-verboseโ (Optional) dumps the content of each symbol in the table (BOOLEAN,false) ๐
VM.systemdictionary ๐
Prints the statistics for dictionary hashtable sizes and bucket length. Number-crunching era โจ
Impact: Medium
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
verboseโ (Optional) dump the content of each dictionary entry for all class loaders (BOOLEAN,false). Notice there's no dash on this one โ she's built different, don't @ me ๐
VM.system_properties ๐ท๏ธ
Prints the system properties. That's it. That's the whole command. Low effort, high payoff ๐ซถ
Impact: Low
VM.uptime [options] โฐ
Prints the VM uptime โ how long your JVM has been awake and thriving ๐ธ
Impact: Low
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
-dateโ (Optional) adds a prefix with the current date (BOOLEAN,false) ๐
VM.version ๐
Prints JVM version information. Short, iconic, no options, no notes, no drama โ main character energy fr fr ๐
Impact: Low
aaaand that's a wrap on the whole page, bestie!! ๐ You made it to the end, I'm so proud ๐ฅน This lil beauty is from JDK 21, dated 2023, and the footer tag on the page reads JDK 21, 2023, JCMD(1) โ that's the source, the version and the date all snuggled together at the bottom ๐ Now go forth and jcmd responsibly, iykyk ๐
โจ
๐ฆ where this page comes from
- centos-stream 10: java-21-openjdk-headless 1:21.0.12.1.1-2.1.el10 ยท ASL 1.1 and ASL 2.0 and BSD and BSD with advertising and GPL+ and GPLv2 and GPLv2 with exceptions and IJG and LGPLv2+ and MIT and MPLv2.0 and Public Domain and W3C and zlib and ISC and FTL and RSA
- opensuse-leap 16.0: java-21-openjdk-devel 21.0.12.1-160000.1.1 ยท Apache-1.1 AND Apache-2.0 AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-only WITH Classpath-exception-2.0 AND LGPL-2.0-only AND MPL-1.0 AND MPL-1.1 AND LicenseRef-SUSE-Public-Domain AND W3C
- opensuse-leap 16.0: java-21-openjdk-devel 21.0.12.1-160000.1.1 ยท Apache-1.1 AND Apache-2.0 AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-only WITH Classpath-exception-2.0 AND LGPL-2.0-only AND MPL-1.0 AND MPL-1.1 AND LicenseRef-SUSE-Public-Domain AND W3C
- opensuse-leap 16.0: java-21-openjdk-devel 21.0.12.1-160000.1.1 ยท Apache-1.1 AND Apache-2.0 AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-only WITH Classpath-exception-2.0 AND LGPL-2.0-only AND MPL-1.0 AND MPL-1.1 AND LicenseRef-SUSE-Public-Domain AND W3C
- opensuse-leap 16.0: java-21-openjdk-devel 21.0.12.1-160000.1.1 ยท Apache-1.1 AND Apache-2.0 AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-only WITH Classpath-exception-2.0 AND LGPL-2.0-only AND MPL-1.0 AND MPL-1.1 AND LicenseRef-SUSE-Public-Domain AND W3C
- Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms