| .\" Copyright (c) 2012, 2023, Oracle and/or its affiliates. All rights reserved. |
| .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
| .\" |
| .\" This code is free software; you can redistribute it and/or modify it |
| .\" under the terms of the GNU General Public License version 2 only, as |
| .\" published by the Free Software Foundation. |
| .\" |
| .\" This code is distributed in the hope that it will be useful, but WITHOUT |
| .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
| .\" version 2 for more details (a copy is included in the LICENSE file that |
| .\" accompanied this code). |
| .\" |
| .\" You should have received a copy of the GNU General Public License version |
| .\" 2 along with this work; if not, write to the Free Software Foundation, |
| .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
| .\" |
| .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
| .\" or visit www.oracle.com if you need additional information or have any |
| .\" questions. |
| .\" |
| .\" Automatically generated by Pandoc 2.19.2 |
| .\" |
| .\" Define V font for inline verbatim, using C font in formats |
| .\" that render this, and otherwise B font. |
| .ie "\f[CB]x\f[R]"x" \{\ |
| . ftr V B |
| . ftr VI BI |
| . ftr VB B |
| . ftr VBI BI |
| .\} |
| .el \{\ |
| . ftr V CR |
| . ftr VI CI |
| . ftr VB CB |
| . ftr VBI CBI |
| .\} |
| .TH "JCMD" "1" "2023" "JDK 21" "JDK Commands" |
| .hy |
| .SH NAME |
| .PP |
| jcmd - send diagnostic command requests to a running Java Virtual |
| Machine (JVM) |
| .SH SYNOPSIS |
| .PP |
| \f[V]jcmd\f[R] [\f[I]pid\f[R] | \f[I]main-class\f[R]] |
| \f[I]command\f[R]... |
| | \f[V]PerfCounter.print\f[R] | \f[V]-f\f[R] \f[I]filename\f[R] |
| .PP |
| \f[V]jcmd\f[R] [\f[V]-l\f[R]] |
| .PP |
| \f[V]jcmd\f[R] \f[V]-h\f[R] |
| .TP |
| \f[I]pid\f[R] |
| When used, the \f[V]jcmd\f[R] utility sends the diagnostic command |
| request to the process ID for the Java process. |
| .TP |
| \f[I]main-class\f[R] |
| When used, the \f[V]jcmd\f[R] utility sends the diagnostic command |
| request to all Java processes with the specified name of the main class. |
| .TP |
| \f[I]command\f[R] |
| The \f[V]command\f[R] must be a valid \f[V]jcmd\f[R] command for the |
| selected JVM. |
| The list of available commands for \f[V]jcmd\f[R] is obtained by running |
| the \f[V]help\f[R] command (\f[V]jcmd\f[R] \f[I]pid\f[R] \f[V]help\f[R]) |
| where \f[I]pid\f[R] is the process ID for the running Java process. |
| If the \f[I]pid\f[R] is \f[V]0\f[R], 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 |
| with the main class and command-line arguments that were used to launch |
| the process (the same as using \f[V]-l\f[R]). |
| .TP |
| \f[V]Perfcounter.print\f[R] |
| Prints the performance counters exposed by the specified Java process. |
| .TP |
| \f[V]-f\f[R] \f[I]filename\f[R] |
| Reads and executes commands from a specified file, \f[I]filename\f[R]. |
| .TP |
| \f[V]-l\f[R] |
| 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 as |
| \f[V]ps\f[R] to look up the PID. |
| .RS |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| Using \f[V]jcmd\f[R] without arguments is the same as using |
| \f[V]jcmd -l\f[R]. |
| .RE |
| .TP |
| \f[V]-h\f[R] |
| Displays the \f[V]jcmd\f[R] utility\[aq]s command-line help. |
| .SH DESCRIPTION |
| .PP |
| The \f[V]jcmd\f[R] 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 |
| 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: |
| .RS |
| .PP |
| \f[V]jcmd\f[R] \f[I]pid\f[R] \f[V]help\f[R] \f[I]command\f[R] |
| .RE |
| .PP |
| If arguments contain spaces, then you must surround them with single or |
| double quotation marks (\f[V]\[aq]\f[R] or \f[V]\[dq]\f[R]). |
| In addition, you must escape single or double quotation marks with a |
| backslash (\f[V]\[rs]\f[R]) 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). |
| .PP |
| If you specify the process identifier (\f[I]pid\f[R]) or the main class |
| (\f[I]main-class\f[R]) as the first argument, then the \f[V]jcmd\f[R] |
| 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 \f[V]0\f[R] as the process identifier. |
| .SH COMMANDS FOR JCMD |
| .PP |
| The \f[I]command\f[R] must be a valid \f[V]jcmd\f[R] diagnostic command |
| for the selected JVM. |
| The list of available commands for \f[V]jcmd\f[R] is obtained by running |
| the \f[V]help\f[R] command (\f[V]jcmd\f[R] \f[I]pid\f[R] \f[V]help\f[R]) |
| where \f[I]pid\f[R] is the process ID for a running Java process. |
| If the \f[I]pid\f[R] is \f[V]0\f[R], 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 \f[V]-l\f[R]). |
| .PP |
| The following commands are available: |
| .TP |
| \f[V]help\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]] |
| For more information about a specific command. |
| .RS |
| .PP |
| \f[I]arguments\f[R]: |
| .IP \[bu] 2 |
| \f[I]command name\f[R]: The name of the command for which we want help |
| (STRING, no default value) |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-all\f[R]: (Optional) Show help for all commands (BOOLEAN, false) . |
| .RE |
| .TP |
| \f[V]Compiler.codecache\f[R] |
| Prints code cache layout and bounds. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]Compiler.codelist\f[R] |
| Prints all compiled methods in code cache that are alive. |
| .RS |
| .PP |
| Impact: Medium |
| .RE |
| .TP |
| \f[V]Compiler.perfmap\f[R] (Linux only) |
| Write map file for Linux perf tool. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]Compiler.queue\f[R] |
| Prints methods queued for compilation. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]Compiler.directives_add *filename* *arguments*\f[R] |
| Adds compiler directives from a file. |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[I]arguments\f[R]: |
| .PP |
| \f[I]filename\f[R]: The name of the directives file (STRING, no default |
| value) |
| .RE |
| .TP |
| \f[V]Compiler.directives_clear\f[R] |
| Remove all compiler directives. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]Compiler.directives_print\f[R] |
| Prints all active compiler directives. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]Compiler.directives_remove\f[R] |
| Remove latest added compiler directive. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]GC.class_histogram\f[R] [\f[I]options\f[R]] |
| Provides statistics about the Java heap usage. |
| .RS |
| .PP |
| Impact: High --- depends on Java heap size and content. |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The \f[I]options\f[R] must be specified using either \f[I]key\f[R] or |
| \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-all\f[R]: (Optional) Inspects all objects, including unreachable |
| objects (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]-parallel\f[R]: (Optional) Number of parallel threads to use for |
| heap inspection. |
| 0 (the default) means let the VM determine the number of threads to use. |
| 1 means 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) |
| .RE |
| .TP |
| \f[V]GC.finalizer_info\f[R] |
| Provides information about the Java finalization queue. |
| .RS |
| .PP |
| Impact: Medium |
| .RE |
| .TP |
| \f[V]GC.heap_dump\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]] |
| Generates a HPROF format dump of the Java heap. |
| .RS |
| .PP |
| Impact: High --- depends on the Java heap size and content. |
| Request a full GC unless the \f[V]-all\f[R] option is specified. |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-all\f[R]: (Optional) Dump all objects, including unreachable |
| objects (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]-gz\f[R]: (Optional) If specified, the heap dump is written in |
| gzipped format using the given compression level. |
| 1 (recommended) is the fastest, 9 the strongest compression. |
| (INT, 1) |
| .IP \[bu] 2 |
| \f[V]-overwrite\f[R]: (Optional) If specified, the dump file will be |
| overwritten if it exists (BOOLEAN, false) |
| .PP |
| \f[I]arguments\f[R]: |
| .IP \[bu] 2 |
| \f[I]filename\f[R]: The name of the dump file (STRING, no default value) |
| .RE |
| .TP |
| \f[V]GC.heap_info\f[R] |
| Provides generic Java heap information. |
| .RS |
| .PP |
| Impact: Medium |
| .RE |
| .TP |
| \f[V]GC.run\f[R] |
| Calls \f[V]java.lang.System.gc()\f[R]. |
| .RS |
| .PP |
| Impact: Medium --- depends on the Java heap size and content. |
| .RE |
| .TP |
| \f[V]GC.run_finalization\f[R] |
| Calls \f[V]java.lang.System.runFinalization()\f[R]. |
| .RS |
| .PP |
| Impact: Medium --- depends on the Java content. |
| .RE |
| .TP |
| \f[V]JFR.check\f[R] [\f[I]options\f[R]] |
| Show information about a running flight recording |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The \f[I]options\f[R] must be specified using either \f[I]key\f[R] or |
| \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| If no parameters are entered, information for all active recordings is |
| shown. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]name\f[R]: (Optional) Name of the flight recording. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]verbose\f[R]: (Optional) Flag for printing the event settings for |
| the recording (BOOLEAN, false) |
| .RE |
| .TP |
| \f[V]JFR.configure\f[R] [\f[I]options\f[R]] |
| Set the parameters for a flight recording |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The \f[I]options\f[R] must be specified using either \f[I]key\f[R] or |
| \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| If no parameters are entered, the current settings are displayed. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]globalbuffercount\f[R]: (Optional) Number of global buffers. |
| This option is a legacy option: change the \f[V]memorysize\f[R] |
| parameter to alter the number of global buffers. |
| This value cannot be changed once JFR has been initialized. |
| (STRING, default determined by the value for \f[V]memorysize\f[R]) |
| .IP \[bu] 2 |
| \f[V]globalbuffersize\f[R]: (Optional) Size of the global buffers, in |
| bytes. |
| This option is a legacy option: change the \f[V]memorysize\f[R] |
| parameter to alter the size of the global buffers. |
| This value cannot be changed once JFR has been initialized. |
| (STRING, default determined by the value for \f[V]memorysize\f[R]) |
| .IP \[bu] 2 |
| \f[V]maxchunksize\f[R]: (Optional) Maximum size of an individual data |
| chunk in bytes if one of the following suffixes is not used: \[aq]m\[aq] |
| or \[aq]M\[aq] for megabytes OR \[aq]g\[aq] or \[aq]G\[aq] for |
| gigabytes. |
| This value cannot be changed once JFR has been initialized. |
| (STRING, 12M) |
| .IP \[bu] 2 |
| \f[V]memorysize\f[R]: (Optional) Overall memory size, in bytes if one of |
| the following suffixes is not used: \[aq]m\[aq] or \[aq]M\[aq] for |
| megabytes OR \[aq]g\[aq] or \[aq]G\[aq] for gigabytes. |
| This value cannot be changed once JFR has been initialized. |
| (STRING, 10M) |
| .IP \[bu] 2 |
| \f[V]repositorypath\f[R]: (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 \f[V]/tmp\f[R]. |
| On Windwows, the temporary directory is specified by the \f[V]TMP\f[R] |
| environment variable.) |
| .IP \[bu] 2 |
| \f[V]preserve-repository=\f[R]{\f[V]true\f[R]|\f[V]false\f[R]} : |
| 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. |
| .IP \[bu] 2 |
| \f[V]stackdepth\f[R]: (Optional) Stack depth for stack traces. |
| Setting this value greater than the default of 64 may cause a |
| performance degradation. |
| This value cannot be changed once JFR has been initialized. |
| (LONG, 64) |
| .IP \[bu] 2 |
| \f[V]thread_buffer_size\f[R]: (Optional) Local buffer size for each |
| thread in bytes if one of the following suffixes is not used: |
| \[aq]k\[aq] or \[aq]K\[aq] for kilobytes or \[aq]m\[aq] or \[aq]M\[aq] |
| for megabytes. |
| Overriding this parameter could reduce performance and is not |
| recommended. |
| This value cannot be changed once JFR has been initialized. |
| (STRING, 8k) |
| .IP \[bu] 2 |
| \f[V]samplethreads\f[R]: (Optional) Flag for activating thread sampling. |
| (BOOLEAN, true) |
| .RE |
| .TP |
| \f[V]JFR.dump\f[R] [\f[I]options\f[R]] |
| Write data to a file while a flight recording is running |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The \f[I]options\f[R] must be specified using either \f[I]key\f[R] or |
| \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| No options are required. |
| The recording continues to run after the data is written. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]begin\f[R]: (Optional) Specify the time from which recording data |
| will be included in the dump file. |
| The format is specified as local time. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]end\f[R]: (Optional) Specify the time to which recording data will |
| be included in the dump file. |
| The format is specified as local time. |
| (STRING, no default value) |
| .RS 2 |
| .PP |
| \f[B]Note:\f[R] For both \f[V]begin\f[R] and \f[V]end\f[R], the time |
| must be in a format that can be read by |
| java.time.LocalTime::parse(STRING), |
| java.time.LocalDateTime::parse(STRING) or |
| java.time.Instant::parse(STRING). |
| For example, \[dq]13:20:15\[dq], \[dq]2020-03-17T09:00:00\[dq] or |
| \[dq]2020-03-17T09:00:00Z\[dq]. |
| .PP |
| \f[B]Note:\f[R] \f[V]begin\f[R] and \f[V]end\f[R] times correspond to |
| the timestamps found within the recorded information in the flight |
| recording data. |
| .PP |
| Another option is to use a time relative to the current time that is |
| specified by a negative integer followed by \[dq]s\[dq], \[dq]m\[dq] or |
| \[dq]h\[dq]. |
| For example, \[dq]-12h\[dq], \[dq]-15m\[dq] or \[dq]-30s\[dq] |
| .RE |
| .IP \[bu] 2 |
| \f[V]filename\f[R]: (Optional) Name of the file to which the flight |
| recording data is dumped. |
| If no filename is given, a filename is 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 in the specified directory. |
| If %p and/or %t is specified in the filename, it expands to the |
| JVM\[aq]s PID and the current timestamp, respectively. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]maxage\f[R]: (Optional) Length of time for dumping the flight |
| recording data to a file. |
| (INTEGER followed by \[aq]s\[aq] for seconds \[aq]m\[aq] for minutes or |
| \[aq]h\[aq] for hours, no default value) |
| .IP \[bu] 2 |
| \f[V]maxsize\f[R]: (Optional) Maximum size for the amount of data to |
| dump from a flight recording in bytes if one of the following suffixes |
| is not used: \[aq]m\[aq] or \[aq]M\[aq] for megabytes OR \[aq]g\[aq] or |
| \[aq]G\[aq] for gigabytes. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]name\f[R]: (Optional) Name of the recording. |
| If no name is given, data from all recordings is dumped. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]path-to-gc-root\f[R]: (Optional) Flag for saving the path to |
| garbage collection (GC) roots at the time the recording data is dumped. |
| The path information is useful for finding memory leaks but collecting |
| it can cause the application to pause for a short period of time. |
| Turn on this flag only when you have an application that you suspect has |
| a memory leak. |
| (BOOLEAN, false) |
| .RE |
| .TP |
| \f[V]JFR.start\f[R] [\f[I]options\f[R]] |
| Start a flight recording |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The \f[I]options\f[R] must be specified using either \f[I]key\f[R] or |
| \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| If no parameters are entered, then a recording is started with default |
| values. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]delay\f[R]: (Optional) Length of time to wait before starting to |
| record (INTEGER followed by \[aq]s\[aq] for seconds \[aq]m\[aq] for |
| minutes or \[aq]h\[aq] for hours, 0s) |
| .IP \[bu] 2 |
| \f[V]disk\f[R]: (Optional) Flag for also writing the data to disk while |
| recording (BOOLEAN, true) |
| .IP \[bu] 2 |
| \f[V]dumponexit\f[R]: (Optional) Flag for writing the recording to disk |
| when the Java Virtual Machine (JVM) shuts down. |
| If set to \[aq]true\[aq] and no value is given for \f[V]filename\f[R], |
| 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: \f[V]id-1-2019_12_12_10_41.jfr\f[R]) (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]duration\f[R]: (Optional) Length of time to record. |
| Note that \f[V]0s\f[R] means forever (INTEGER followed by \[aq]s\[aq] |
| for seconds \[aq]m\[aq] for minutes or \[aq]h\[aq] for hours, 0s) |
| .IP \[bu] 2 |
| \f[V]filename\f[R]: (Optional) Name of the file to which the flight |
| recording data is written when the recording is stopped. |
| If no filename is given, a filename is generated from the PID and the |
| current date and is 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 %p and/or %t is specified in the filename, it expands to the |
| JVM\[aq]s PID and the current timestamp, respectively. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]maxage\f[R]: (Optional) Maximum time to keep the recorded data on |
| disk. |
| This parameter is valid only when the \f[V]disk\f[R] parameter is set to |
| \f[V]true\f[R]. |
| Note \f[V]0s\f[R] means forever. |
| (INTEGER followed by \[aq]s\[aq] for seconds \[aq]m\[aq] for minutes or |
| \[aq]h\[aq] for hours, 0s) |
| .IP \[bu] 2 |
| \f[V]maxsize\f[R]: (Optional) Maximum size of the data to keep on disk |
| in bytes if one of the following suffixes is not used: \[aq]m\[aq] or |
| \[aq]M\[aq] for megabytes OR \[aq]g\[aq] or \[aq]G\[aq] for gigabytes. |
| This parameter is valid only when the \f[V]disk\f[R] parameter is set to |
| \[aq]true\[aq]. |
| The value must not be less than the value for the \f[V]maxchunksize\f[R] |
| parameter set with the \f[V]JFR.configure\f[R] command. |
| (STRING, 0 (no maximum size)) |
| .IP \[bu] 2 |
| \f[V]name\f[R]: (Optional) Name of the recording. |
| If no name is provided, a name is generated. |
| Make note of the generated name that is shown in the response to the |
| command so that you can use it with other commands. |
| (STRING, system-generated default name) |
| .IP \[bu] 2 |
| \f[V]path-to-gc-root\f[R]: (Optional) Flag for saving the path to |
| garbage collection (GC) roots at the end of a recording. |
| The path information 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 the \f[V]settings\f[R] parameter is set to \[aq]profile\[aq], then |
| the information collected includes the stack trace from where the |
| potential leaking object was allocated. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]settings\f[R]: (Optional) Name of the settings file that identifies |
| which events to record. |
| To specify more than one file, separate the names with a comma |
| (\[aq],\[aq]). |
| Include the path if the file is not in \f[V]JAVA-HOME\f[R]/lib/jfr. |
| The following profiles are included with the JDK in the |
| \f[V]JAVA-HOME\f[R]/lib/jfr directory: \[aq]default.jfc\[aq]: 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; \[aq]profile.jfc\[aq]: Provides more data than the |
| \[aq]default.jfc\[aq] profile, but with more overhead and impact on |
| performance. |
| Use this configuration for short periods of time when more information |
| is needed. |
| Use \f[V]none\f[R] to start a recording without a predefined |
| configuration file. |
| (STRING, \f[V]JAVA-HOME\f[R]/lib/jfr/default.jfc) |
| .PP |
| Event settings and .jfc options can be specified using the following |
| syntax: |
| .IP \[bu] 2 |
| \f[V]option\f[R]: (Optional) Specifies the option value to modify. |
| To list available options, use the \f[V]JAVA_HOME\f[R]/bin/jfr tool. |
| .IP \[bu] 2 |
| \f[V]event-setting\f[R]: (Optional) Specifies the event setting value to |
| modify. |
| Use the form: \f[V]<event-name>#<setting-name>=<value>\f[R] To add a new |
| event setting, prefix the event name with \[aq]+\[aq]. |
| .PP |
| 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. |
| 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. |
| .RE |
| .TP |
| \f[V]JFR.stop\f[R] [\f[I]options\f[R]] |
| Stop a flight recording |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The \f[I]options\f[R] must be specified using either \f[I]key\f[R] or |
| \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| If no parameters are entered, then no recording is stopped. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]filename\f[R]: (Optional) Name of the file to which the recording |
| is written when the recording is stopped. |
| If %p and/or %t is specified in the filename, it expands to the |
| JVM\[aq]s PID and the current timestamp, respectively. |
| If no path is provided, the data from the recording is discarded. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]name\f[R]: (Optional) Name of the recording (STRING, no default |
| value) |
| .RE |
| .TP |
| \f[V]JVMTI.agent_load\f[R] [\f[I]arguments\f[R]] |
| Loads JVMTI native agent. |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[I]arguments\f[R]: |
| .IP \[bu] 2 |
| \f[I]library path\f[R]: Absolute path of the JVMTI agent to load. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[I]agent option\f[R]: (Optional) Option string to pass the agent. |
| (STRING, no default value) |
| .RE |
| .TP |
| \f[V]JVMTI.data_dump\f[R] |
| Signals the JVM to do a data-dump request for JVMTI. |
| .RS |
| .PP |
| Impact: High |
| .RE |
| .TP |
| \f[V]ManagementAgent.start\f[R] [\f[I]options\f[R]] |
| Starts remote management agent. |
| .RS |
| .PP |
| Impact: Low --- no impact |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]config.file\f[R]: (Optional) Sets |
| \f[V]com.sun.management.config.file\f[R] (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.host\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.host\f[R] (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.port\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.port\f[R] (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.rmi.port\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.rmi.port\f[R] (STRING, no default |
| value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.ssl\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.ssl\f[R] (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.registry.ssl\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.registry.ssl\f[R] (STRING, no default |
| value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.authenticate\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.authenticate\f[R] (STRING, no default |
| value) |
| .IP \[bu] 2 |
| jmxremote.password.file: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.password.file\f[R] (STRING, no default |
| value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.access.file\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.acce ss.file\f[R] (STRING, no default |
| value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.login.config\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.log in.config\f[R] (STRING, no default |
| value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.ssl.enabled.cipher.suites\f[R]: (Optional) Sets |
| \f[V]com.sun.management\f[R]. |
| .IP \[bu] 2 |
| \f[V]jmxremote.ssl.enabled.cipher.suite\f[R]: (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.ssl.enabled.protocols\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxr emote.ssl.enabled.protocols\f[R] (STRING, |
| no default value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.ssl.need.client.auth\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxre mote.need.client.auth\f[R] (STRING, no |
| default value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.ssl.config.file\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote. ssl_config_file\f[R] (STRING, no |
| default value) |
| .IP \[bu] 2 |
| \f[V]jmxremote.autodiscovery\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jmxremote.au todiscovery\f[R] (STRING, no |
| default value) |
| .IP \[bu] 2 |
| \f[V]jdp.port\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jdp.port\f[R] (INT, no default value) |
| .IP \[bu] 2 |
| \f[V]jdp.address\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jdp.address\f[R] (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]jdp.source_addr\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jdp.source_addr\f[R] (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]jdp.ttl\f[R]: (Optional) Sets \f[V]com.sun.management.jdp.ttl\f[R] |
| (INT, no default value) |
| .IP \[bu] 2 |
| \f[V]jdp.pause\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jdp.pause\f[R] (INT, no default value) |
| .IP \[bu] 2 |
| \f[V]jdp.name\f[R]: (Optional) Sets |
| \f[V]com.sun.management.jdp.name\f[R] (STRING, no default value) |
| .RE |
| .TP |
| \f[V]ManagementAgent.start_local\f[R] |
| Starts the local management agent. |
| .RS |
| .PP |
| Impact: Low --- no impact |
| .RE |
| .TP |
| \f[V]ManagementAgent.status\f[R] |
| Print the management agent status. |
| .RS |
| .PP |
| Impact: Low --- no impact |
| .RE |
| .TP |
| \f[V]ManagementAgent.stop\f[R] |
| Stops the remote management agent. |
| .RS |
| .PP |
| Impact: Low --- no impact |
| .RE |
| .TP |
| \f[V]System.native_heap_info\f[R] (Linux only) |
| Prints information about native heap usage through malloc_info(3). |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]System.trim_native_heap\f[R] (Linux only) |
| Attempts to free up memory by trimming the C-heap. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]Thread.print\f[R] [\f[I]options\f[R]] |
| Prints all threads with stacktraces. |
| .RS |
| .PP |
| Impact: Medium --- depends on the number of threads. |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-e\f[R]: (Optional) Print extended thread information (BOOLEAN, |
| false) |
| .IP \[bu] 2 |
| \f[V]-l\f[R]: (Optional) Prints \f[V]java.util.concurrent\f[R] locks |
| (BOOLEAN, false) |
| .RE |
| .TP |
| \f[V]VM.cds\f[R] [\f[I]arguments\f[R]] |
| Dumps a static or dynamic shared archive that includes all currently |
| loaded classes. |
| .RS |
| .PP |
| Impact: Medium --- pause time depends on number of loaded classes |
| .PP |
| \f[I]arguments\f[R]: |
| .IP \[bu] 2 |
| \f[V]subcmd\f[R]: must be either \f[V]static_dump\f[R] or |
| \f[V]dynamic_dump\f[R] (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]filename\f[R]: (Optional) Name of the shared archive to be dumped |
| (STRING, no default value) |
| .PP |
| If \f[V]filename\f[R] is not specified, a default file name is chosen |
| using the pid of the target JVM process. |
| For example, java_pid1234_static.jsa, java_pid5678_dynamic.jsa, etc. |
| .PP |
| If \f[V]filename\f[R] is not specified as an absolute path, the archive |
| file is created in a directory relative to the current directory of the |
| target JVM process. |
| .PP |
| If \f[V]dynamic_dump\f[R] is specified, the target JVM must be started |
| with the JVM option \f[V]-XX:+RecordDynamicDumpInfo\f[R]. |
| .RE |
| .TP |
| \f[V]VM.classloaders\f[R] [\f[I]options\f[R]] |
| Prints classloader hierarchy. |
| .RS |
| .PP |
| Impact: Medium --- Depends on number of class loaders and classes |
| loaded. |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]show-classes\f[R]: (Optional) Print loaded classes. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]verbose\f[R]: (Optional) Print detailed information. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]fold\f[R]: (Optional) Show loaders of the same name and class as |
| one. |
| (BOOLEAN, true) |
| .RE |
| .TP |
| \f[V]VM.classloader_stats\f[R] |
| Prints statistics about all ClassLoaders. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]VM.class_hierarchy\f[R] [\f[I]options\f[R]] [\f[I]arguments\f[R]] |
| Prints a list of all loaded classes, indented to show the class |
| hierarchy. |
| The name of each class is followed by the ClassLoaderData* of its |
| ClassLoader, or \[dq]null\[dq] if it is loaded by the bootstrap class |
| loader. |
| .RS |
| .PP |
| Impact: Medium --- depends on the number of loaded classes. |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-i\f[R]: (Optional) Inherited interfaces should be printed. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]-s\f[R]: (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) |
| .PP |
| \f[I]arguments\f[R]: |
| .IP \[bu] 2 |
| \f[I]classname\f[R]: (Optional) The name of the class whose hierarchy |
| should be printed. |
| If not specified, all class hierarchies are printed. |
| (STRING, no default value) |
| .RE |
| .TP |
| \f[V]VM.command_line\f[R] |
| Prints the command line used to start this VM instance. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]VM.dynlibs\f[R] |
| Prints the loaded dynamic libraries. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]VM.events\f[R] [\f[I]options\f[R]] |
| Print VM event logs |
| .RS |
| .PP |
| Impact: Low --- Depends on event log size. |
| .PP |
| \f[I]options\f[R]: |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .IP \[bu] 2 |
| \f[V]log\f[R]: (Optional) Name of log to be printed. |
| If omitted, all logs are printed. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]max\f[R]: (Optional) Maximum number of events to be printed (newest |
| first). |
| If omitted, all events are printed. |
| (STRING, no default value) |
| .RE |
| .TP |
| \f[V]VM.info\f[R] |
| Prints information about the JVM environment and status. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]VM.log\f[R] [\f[I]options\f[R]] |
| Lists current log configuration, enables/disables/configures a log |
| output, or rotates all logs. |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[I]options\f[R]: |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .IP \[bu] 2 |
| \f[V]output\f[R]: (Optional) The name or index (#) of output to |
| configure. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]output_options\f[R]: (Optional) Options for the output. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]what\f[R]: (Optional) Configures what tags to log. |
| (STRING, no default value ) |
| .IP \[bu] 2 |
| \f[V]decorators\f[R]: (Optional) Configures which decorators to use. |
| Use \[aq]none\[aq] or an empty value to remove all. |
| (STRING, no default value) |
| .IP \[bu] 2 |
| \f[V]disable\f[R]: (Optional) Turns off all logging and clears the log |
| configuration. |
| (BOOLEAN, no default value) |
| .IP \[bu] 2 |
| \f[V]list\f[R]: (Optional) Lists current log configuration. |
| (BOOLEAN, no default value) |
| .IP \[bu] 2 |
| \f[V]rotate\f[R]: (Optional) Rotates all logs. |
| (BOOLEAN, no default value) |
| .RE |
| .TP |
| \f[V]VM.flags\f[R] [\f[I]options\f[R]] |
| Prints the VM flag options and their current values. |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-all\f[R]: (Optional) Prints all flags supported by the VM |
| (BOOLEAN, false). |
| .RE |
| .TP |
| \f[V]VM.metaspace\f[R] [\f[I]options\f[R]] |
| Prints the statistics for the metaspace |
| .RS |
| .PP |
| Impact: Medium --- Depends on number of classes loaded. |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]basic\f[R]: (Optional) Prints a basic summary (does not need a |
| safepoint). |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]show-loaders\f[R]: (Optional) Shows usage by class loader. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]show-classes\f[R]: (Optional) If show-loaders is set, shows loaded |
| classes for each loader. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]by-chunktype\f[R]: (Optional) Break down numbers by chunk type. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]by-spacetype\f[R]: (Optional) Break down numbers by loader type. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]vslist\f[R]: (Optional) Shows details about the underlying virtual |
| space. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]scale\f[R]: (Optional) Memory usage in which to scale. |
| Valid values are: 1, KB, MB or GB (fixed scale) or \[dq]dynamic\[dq] for |
| a dynamically chosen scale. |
| (STRING, dynamic) |
| .RE |
| .TP |
| \f[V]VM.native_memory\f[R] [\f[I]options\f[R]] |
| Prints native memory usage |
| .RS |
| .PP |
| Impact: Medium |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]summary\f[R]: (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) |
| .IP \[bu] 2 |
| \f[V]detail\f[R]: (Optional) Requests runtime to report memory |
| allocation >= 1K by each callsite. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]baseline\f[R]: (Optional) Requests runtime to baseline current |
| memory usage, so it can be compared against in later time. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]summary.diff\f[R]: (Optional) Requests runtime to report memory |
| summary comparison against previous baseline. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]detail.diff\f[R]: (Optional) Requests runtime to report memory |
| detail comparison against previous baseline, which shows the memory |
| allocation activities at different callsites. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]statistics\f[R]: (Optional) Prints tracker statistics for tuning |
| purpose. |
| (BOOLEAN, false) |
| .IP \[bu] 2 |
| \f[V]scale\f[R]: (Optional) Memory usage in which scale, KB, MB or GB |
| (STRING, KB) |
| .RE |
| .TP |
| \f[V]VM.print_touched_methods\f[R] |
| Prints all methods that have ever been touched during the lifetime of |
| this JVM. |
| .RS |
| .PP |
| Impact: Medium --- depends on Java content. |
| .RE |
| .TP |
| \f[V]VM.set_flag\f[R] [\f[I]arguments\f[R]] |
| Sets the VM flag option by using the provided value. |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[I]arguments\f[R]: |
| .IP \[bu] 2 |
| \f[I]flag name\f[R]: The name of the flag that you want to set (STRING, |
| no default value) |
| .IP \[bu] 2 |
| \f[I]string value\f[R]: (Optional) The value that you want to set |
| (STRING, no default value) |
| .RE |
| .TP |
| \f[V]VM.stringtable\f[R] [\f[I]options\f[R]] |
| Dumps the string table. |
| .RS |
| .PP |
| Impact: Medium --- depends on the Java content. |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-verbose\f[R]: (Optional) Dumps the content of each string in the |
| table (BOOLEAN, false) |
| .RE |
| .TP |
| \f[V]VM.symboltable\f[R] [\f[I]options\f[R]] |
| Dumps the symbol table. |
| .RS |
| .PP |
| Impact: Medium --- depends on the Java content. |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax). |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-verbose\f[R]: (Optional) Dumps the content of each symbol in the |
| table (BOOLEAN, false) |
| .RE |
| .TP |
| \f[V]VM.systemdictionary\f[R] |
| Prints the statistics for dictionary hashtable sizes and bucket length. |
| .RS |
| .PP |
| Impact: Medium |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]verbose\f[R]: (Optional) Dump the content of each dictionary entry |
| for all class loaders (BOOLEAN, false) . |
| .RE |
| .TP |
| \f[V]VM.system_properties\f[R] |
| Prints the system properties. |
| .RS |
| .PP |
| Impact: Low |
| .RE |
| .TP |
| \f[V]VM.uptime\f[R] [\f[I]options\f[R]] |
| Prints the VM uptime. |
| .RS |
| .PP |
| Impact: Low |
| .PP |
| \f[B]Note:\f[R] |
| .PP |
| The following \f[I]options\f[R] must be specified using either |
| \f[I]key\f[R] or \f[I]key\f[R]\f[V]=\f[R]\f[I]value\f[R] syntax. |
| .PP |
| \f[I]options\f[R]: |
| .IP \[bu] 2 |
| \f[V]-date\f[R]: (Optional) Adds a prefix with the current date |
| (BOOLEAN, false) |
| .RE |
| .TP |
| \f[V]VM.version\f[R] |
| Prints JVM version information. |
| .RS |
| .PP |
| Impact: Low |
| .RE |