JCMD(1)
okay bestie, welcome to jcmd(1) from the JDK Commands manual π β¨ this is the utility that sends diagnostic command requests to a running Java Virtual Machine (JVM), and weβre gonna get you fluent in it, no cap.
π NAME π
jcmd β send diagnostic command requests to a running Java Virtual Machine (JVM). Thatβs the whole vibe. π«Ά
β¨ SYNOPSIS β¨
jcmd [pid | main-class] command... | PerfCounter.print | -f filename
jcmd [-l]
jcmd -h
pidβ when you use this,jcmdsends the diagnostic command request to the process ID for the Java process. πmain-classβ when you use this,jcmdsends the diagnostic command request to all Java processes with the specified name of the main class. iconic behavior.commandβ the command has to be a validjcmdcommand for the selected JVM. You get the list of available commands forjcmdby 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. π-f filenameβ 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. lowkey important.
Note: usingjcmdwithout arguments is the same as usingjcmd -l. periodt. π
-hβ displays thejcmdutilityβs command-line help. π
πΈ DESCRIPTION πΈ
The jcmd utility is used to send diagnostic command requests to the JVM. It must be used on the same machine on which the JVM is running, and it must 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). the way that little shell-quoting dance matters π
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 eitherkeyorkey=valuesyntax.
options:
-allβ (Optional) Show help for all commands (BOOLEAN, false). β¨
π οΈ Compiler.CodeHeap_Analytics [function] [granularity]
Print CodeHeap analytics.
Impact: Low: Depends on code heap size and content. Holds CodeCache_lock during analysis step, usually sub-second duration.
arguments:
functionβ (Optional) Function to be performed (aggregate,UsedSpace,FreeSpace,MethodCount,MethodSpace,MethodAge,MethodNames,discard) (STRING, all)granularityβ (Optional) Detail level β smaller value -> more detail (INT, 4096)
π οΈ 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.directives_add 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
π οΈ Compiler.memory [options]
Print compilation footprint.
Impact: Medium: Pause time depends on number of compiled methods.
Note: the options must be specified using eitherkeyorkey=valuesyntax.
options:
-Hβ (Optional) Human readable format (BOOLEAN, false)-sβ (Optional) Minimum memory size (MEMORY SIZE, 0)
π οΈ Compiler.perfmap [arguments] (Linux only)
Write map file for Linux perf tool.
Impact: Low
arguments:
filenameβ (Optional) The name of the map file (STRING,/tmp/perf-<pid>.map)
If filename is not specified, a default file name is chosen using the pid of the target JVM process. For example, if the pid is 12345, then the default filename will be /tmp/perf-12345.map. π
π οΈ Compiler.queue
Prints methods queued for compilation.
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 eitherkeyorkey=valuesyntax.
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 eitherkeyorkey=valuesyntax.
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)-parallelβ (Optional) Number of parallel threads to use for heap dump. The VM will try to use the specified number of threads, but might use fewer. (INT, 1)
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 eitherkeyorkey=valuesyntax. 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 eitherkeyorkey=valuesyntax. If no parameters are entered, the current settings are displayed.
options:
dumppathβ (Optional) Path to the location where a recording file is written in case the VM runs into a critical error, such as a system crash. (STRING, The default location is the current directory)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) the max size of one single data chunk, in bytes, unless you use one of these suffixes:'m'or'M'for megabytes OR'g'or'G'for gigabytes. Heads up: you literally cannot change this once JFR has been initialized. (STRING,12M)memorysizeβ (optional) the overall memory size, in bytes unless you slap on one of these suffixes:'m'or'M'for megabytes OR'g'or'G'for gigabytes. Also locked in forever once JFR has been initialized, no take-backs. (STRING,10M)repositorypathβ (optional) the path to where recordings hang out until they get written to a permanent file. (STRING, and the default is your OS's temporary directory β on Linux that's/tmp, and on Windwows it's whatever theTMPenvironment variable says π yes bestie that's genuinely how the page spells it, I'm not making this up)preserve-repository={true|false}β says whether files chillin' in the disk repository should be kept after the JVM has exited. Iffalse, they get deleted. Disabled by default. πstackdepthβ (optional) the stack depth for stack traces. Setting this bigger than the default64may cause a performance degradation, so likeβ¦ be mindful. Cannot be changed once JFR has been initialized. (LONG,64)thread_buffer_sizeβ (optional) local buffer size for each thread, in bytes unless you use one of these suffixes:'k'or'K'for kilobytes or'm'or'M'for megabytes. Overriding this could reduce performance and is not recommended β the page said it, not me. Cannot be changed once JFR has been initialized. (STRING,8k)samplethreadsβ (optional) flag for turning on thread sampling. (BOOLEAN,true)
π¦ JFR.dump [options] π¦
Writes data out to a file while a flight recording is actively running. Very "screenshot the group chat mid-conversation" energy.
Impact: Low β¨
Note: you've gotta specify the options using either thekeyorkey=valuesyntax. No options are required tho. And the recording keeps running after the data is written β nothing gets interrupted, we love that for you. π
options:
beginβ (optional) the time from which recording data will be included in the dump file. The format is specified as local time. (STRING, no default value)endβ (optional) the time to which recording data will be 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 readable byjava.time.LocalTime::parse(STRING),java.time.LocalDateTime::parse(STRING)orjava.time.Instant::parse(STRING). Like, for example,"13:20:15","2020-03-17T09:00:00"or"2020-03-17T09:00:00Z".
Note:beginandendtimes correspond to the timestamps found within the recorded information in the flight recording data. iykyk.
Another option (and this one's lowkey the fun one): use a time relative to the current time, specified by a negative integer followed by "s", "m" or "h". For example, "-12h", "-15m" or "-30s".
filenameβ (optional) name of the file the flight recording data gets dumped into. If no filename is given, one gets generated from the PID and the current date. The filename may 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 β lil magic trick, iconic. (STRING, no default value)maxageβ (optional) length of time for dumping the flight recording data to a file. (INTEGER followed by's'for seconds,'m'for minutes or'h'for hours, no default value)maxsizeβ (optional) maximum size for the amount of data to dump from a flight recording, in bytes unless one of the following suffixes is used:'m'or'M'for megabytes OR'g'or'G'for gigabytes. (STRING, no default value)nameβ (optional) name of the recording. If no name is given, data from all recordings is dumped β every last one, no crumbs. (STRING, no default value)path-to-gc-rootsβ (optional) flag for saving the path to garbage collection (GC) roots at the time the recording data is dumped. That path info is genuinely useful for finding memory leaks, BUT collecting it can cause the application to pause for a short period of time. So only turn this flag on when you have an application you suspect has a memory leak. (BOOLEAN,false)
π JFR.start [options] π
Starts a flight recording. The main character of the JFR commands ngl.
Impact: Low β¨
Note: the options must be specified using eitherkeyorkey=valuesyntax. And if you enter no parameters at all, a recording just starts with default values β she's ready with zero input. π«Ά
options:
delayβ (optional) length of time 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 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 that contains 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) length of time to record. Note that0smeans forever β we love an infinite era. (INTEGER followed by's'for seconds,'m'for minutes or'h'for hours,0s)filenameβ (optional) name of the file the flight recording data is written to when the recording is stopped. If no filename is given, a filename is generated from the PID and the current date and placed in the directory where the process was started. The filename may also be a directory, in which case the filename is generated from the PID and the current date in the specified directory. If%pand/or%tis specified in the filename, it expands to the JVM's PID and the current timestamp respectively. (STRING, no default value)maxageβ (optional) maximum time to keep the recorded data on disk. This parameter is valid only when thediskparameter is set totrue. Note0smeans forever. (INTEGER followed by's'for seconds,'m'for minutes or'h'for hours,0s)maxsizeβ (optional) maximum size of the data to keep on disk, in bytes unless one of the following suffixes is used:'m'or'M'for megabytes OR'g'or'G'for gigabytes. This parameter is valid only when thediskparameter is set to'true'. The value must not be less than the value for themaxchunksizeparameter set with theJFR.configurecommand β so check that first, bestie. (STRING,0(no maximum size))nameβ (optional) name of the recording. If no name is provided, one is 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, screenshot it, tattoo it, whatever works. (STRING, system-generated default name)path-to-gc-rootsβ (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. Turn on this flag only when you have an application that 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) 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 is not inJAVA-HOME/lib/jfr. The following profiles are included 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 more information is needed. 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 will take precedence β parameter ate and left no crumbs. The whitespace delimiter can be omitted for timespan values, i.e. 20ms. For more information about the settings syntax, see Javadoc of the jdk.jfr package.
π JFR.stop [options] π
Stops a flight recording. The "okay we're wrapping up" of the JFR sequence.
Impact: Low β¨
Note: options must be specified using eitherkeyorkey=valuesyntax. And if no parameters are entered, then no recording is stopped β awkward silence, nothing happens. π
options:
filenameβ (optional) name of the file the recording is written to when the recording is stopped. If%pand/or%tis specified 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 β gone, poof, deleted without a trace. (STRING, no default value)nameβ (optional) what you wanna call this recording, bestie. STRING, no default value, so like... name it yourself π
JFR.view [options]
Shows you event data in these cute predefined views. It's giving "dashboard but make it JVM" β¨
Impact: Medium
Heads up: the options have to be written as eitherkeyorkey=value. If you pass literally nothing, it just prints out a list of all the views you can pick from. Free menu, no cap π
options:
cell-heightβ (optional) the maximum number of rows in a table cell. INT, and the default depends on which view you're looking at.maxageβ (optional) how far back in time the view reaches. INT followed bysfor seconds,mfor minutes, orhfor hours. Default is10m.maxsizeβ (optional) the maximum size the view spans, in bytes β unless you use one of these suffixes:morMfor megabytes, ORgorGfor gigabytes. STRING, default value is32MB.truncateβ (optional) the maximum number of rows in a table cell. INT, default value depends on the view.verboseβ (optional) shows you the query that actually makes up the view. BOOLEAN, default value isfalse.widthβ (optional) the width of the view, in characters. INT, default value depends on the view.
arguments:
viewβ the name of the view or event type you want to display. Runhelp JFR.viewto see the list of available views. STRING, no default value.
Lowkey the view parameter can also be an event type name β use JFR.view types to see that list. Wanna see everything? JFR.view all-views for all the views, JFR.view all-events for all the events. Iconic. π
JVMTI.agent_load [arguments]
Loads a JVMTI native agent. π§
Impact: Low
arguments:
library pathβ the absolute path of the JVMTI agent you're loading. STRING, no default value.agent optionβ (optional) an option string to pass along to the agent. STRING, no default value.
JVMTI.data_dump
Signals the JVM to do a data-dump request for JVMTI.
Impact: High
Not me warning you β this one's High impact, so maybe don't spam it, bestie π
ManagementAgent.start [options]
Starts the remote management agent. π«Ά
Impact: Low β no impact
Note: the following options must be specified using eitherkeyorkey=valuesyntax. No improvising π
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.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. Same vibe, closer to home π
Impact: Low β no impact
ManagementAgent.status
Prints the management agent status. Just a lil status update, iykyk πΈ
Impact: Low β no impact
ManagementAgent.stop
Stops the remote management agent. Bye bestie π
Impact: Low β no impact
System.dump_map [options] (Linux only)
Dumps an annotated process memory map to an output file. Linux girlies only π§
Impact: Low
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
-Hβ (optional) human readable format. BOOLEAN,false.-Fβ (optional) file path. STRING,"vm_memory_map_.txt".
System.map [options] (Linux only)
Prints an annotated process memory map of the VM process. (Linux only, again β sorry macOS besties π)
Impact: Low
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
-Hβ (optional) human readable format. BOOLEAN,false.
System.native_heap_info (Linux only)
Tries to output info about native heap usage via malloc_info(3). If it doesn't work out, it prints "Error: " and then a reason. We love a graceful fail π«Ά
Impact: Low
System.trim_native_heap (Linux only)
Tries to free up memory by trimming the C-heap. Decluttering era β¨
Impact: Low
Thread.dump_to_file [options] filepath
Dumps threads β stack traces and all β into a file, as plain text or JSON. π
Impact: Medium β depends on the number of threads.
Note: the following options must be specified using eitherkeyorkey=valuesyntax.
options:
-overwriteβ (optional) may overwrite an existing file. BOOLEAN,false.-formatβ (optional) output format, either"plain"or"json". STRING,plain.
arguments:
filepathβ the file path to the output file. STRING, no default value.
Thread.print [options]
Prints all the threads, with stacktraces. The classic, the icon, the main character π
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 every currently loaded class. π
Impact: Medium β pause time depends on number of loaded classes
arguments:
subcmdβ has to be eitherstatic_dumpordynamic_dump. STRING, no default value.filenameβ (optional) name of the shared archive to be dumped. STRING,java_pid<pid>_<subcmd>.jsa.
If you don't give a filename, a default file name gets picked using the pid of the target JVM process. For example: java_pid1234_static.jsa, java_pid5678_dynamic.jsa, etc. Cute, right? π¦
If filename isn't an absolute path, the archive file is created in a directory relative to the current directory of the target JVM process.
If you go with dynamic_dump, the target JVM must be started with the JVM option -XX:+RecordDynamicDumpInfo. No cap, it just has to. π₯
VM.class_hierarchy [options] [arguments]
Prints a list of all loaded classes, indented so you can actually see 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. It's giving family tree π
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 get printed. BOOLEAN,false.
arguments:
classnameβ (optional) the name of the class whose hierarchy should be printed. If you don't specify it, all class hierarchies get printed. STRING, no default value.
VM.classes [options]
Prints all loaded classes. All of them. Every single one π«Ά
Impact: Medium β depends on number of loaded classes.
The following options must be specified using either key or key=value syntax.
options:
-verboseβ (optional) dump the detailed content of a Java class. Some classes are annotated with flags:F= has, or inherits, a non-empty finalize method,f= has final method,W= methods rewritten,C= marked with@Contendedannotation,R= has been redefined,S= is shared class. BOOLEAN,false.
Not me memorizing the flag lore: F, f, W, C, R, S. That's the whole alphabet arc π
VM.classloader_stats
Prints statistics about all ClassLoaders. Numbers, but make it classloader gossip π
Impact: Low
VM.classloaders [options]
Prints the classloader hierarchy. It's giving ancestry dot com π
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.command_line π»
Prints the command line that was used to start this VM instance. fr fr, the whole origin story. β¨
Impact: Low
VM.dynlibs π
Prints all the loaded dynamic libraries. lowkey a library haul. ποΈ
Impact: Low
VM.events [options] πͺ΅
Prints the VM event logs. it's giving storytime but make it system events. π
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.flags [options] π©
Prints all the VM flag options and what their current values are. flag haul, basically. π΄ββ οΈ
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.info β¨
Prints all the info about the JVM environment and its current status. the JVM's whole vibe check. π«Ά
Impact: Low
VM.log [options] πͺ΅
Lists your current log config, turns logging on/off, configures a log output, or rotates all the logs. log slay. π
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.metaspace [options] π§
Prints all the stats for the metaspace. big brain memory energy. π§
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)chunkfreelistβ (Optional) Shows details about global chunk free lists (ChunkManager). (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. memory tea, served fresh. β
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.set_flag [arguments] π©
Sets a VM flag using the value you hand it. flag glow-up. π
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. string theory but make it JVM. πͺ‘
Impact: Medium β depends on the Java content.
Note: The following options must be specified using eitherkeyorkey=valuesyntax.
Options:
-verboseβ (Optional) Dumps the content of each string in the table (BOOLEAN,false)
VM.symboltable [options] π£
Dumps the symbol table. symbol slay. πͺ
Impact: Medium β depends on the Java content.
Note: The following options must be specified using eitherkeyorkey=valuesyntax.
Options:
-verboseβ (Optional) Dumps the content of each symbol in the table (BOOLEAN,false)
VM.system_properties π·οΈ
Prints the system properties. all the system tea. π΅
Impact: Low
VM.systemdictionary ποΈ
Prints stats for dictionary hashtable sizes and bucket length. hashtable hot goss. π
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)
VM.uptime [options] β±οΈ
Prints how long the VM has been up. the VM's screen time. π¬
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 the JVM version information. the JVM's birth certificate. π
Impact: Low
and that's the whole page, bestie! π this slay manual is from JDK 23, dated 2024, and it's the JCMD(1) page β periodt. go off and jcmd responsibly! π«Άβ¨
π¦ where this page comes from
- opensuse-leap 16.0: java-23-openjdk-devel 23.0.2.0-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 SUSE-Public-Domain AND W3C
- opensuse-leap 16.0: java-23-openjdk-devel 23.0.2.0-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 SUSE-Public-Domain AND W3C
- opensuse-leap 16.0: java-23-openjdk-devel 23.0.2.0-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 SUSE-Public-Domain AND W3C
- opensuse-leap 16.0: java-23-openjdk-devel 23.0.2.0-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 SUSE-Public-Domain AND W3C
- Copyright (c) 2012, 2024, 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