繁体   English   中英

适用于 OpenJDK 8 和 OpenJDK 11 的 Java Flight Recorder VM 选项综合列表

[英]Java Flight Recorder comprehensive list of VM options for OpenJDK 8 & OpenJDK 11

有没有办法获得 Java Flight Recorder (JFR) 的 VM 选项的完整列表。 我对 OpenJdk 8 和 OpenJdk 11 特别感兴趣

到目前为止,我发现这个列表非常有用https://chriswhocodes.com/hotspot_options_jdk8.html

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version

是否有任何资源可以提供可用于 JFR 的选项列表?

我认为 JFR 的 VM 选项的最全面和最新的描述可以在 jcmd JFR.start 和 JFR.configure 的文档中找到

https://docs.oracle.com/en/java/javase/15/docs/specs/man/jcmd.html

-XX:StartFlightRecording:

  • 延迟(可选)开始记录前等待的时间长度(整数后跟“s”表示秒“m”表示分钟或“h”表示小时)

  • disk :(可选)用于在记录时也将数据写入磁盘的标志(BOOLEAN,true)

  • dumponexit :(可选)用于在 Java 虚拟机 (JVM) 关闭时将记录写入磁盘的标志。 如果设置为 'true' 并且没有为 filename 指定值,则记录将写入进程启动目录中的文件。 文件名是系统生成的名称,其中包含进程 ID、记录 ID 和当前时间戳。 (例如:hotspot-pid-33507-id-1-2019_12_12_10_41.jfr) (BOOLEAN, false)

  • 持续时间:(可选)要记录的时间长度。 请注意,0 表示永远(整数后跟 's' 表示秒,'m' 表示分钟或 'h' 表示小时)

  • filename :(可选)记录停止时飞行记录数据写入的文件名。 如果没有给出文件名,则根据 PID 和当前日期生成一个文件名,并将其放置在启动进程的目录中。 文件名也可能是一个目录,在这种情况下,文件名是根据 PID 和指定目录中的当前日期生成的。 (STRING,无默认值)

  • maxage :(可选)在磁盘上保留记录数据的最长时间。 该参数仅在disk参数设置为true时有效。 注意 0 表示永远。 (INTEGER 后跟 's' 表示秒,'m' 表示分钟或 'h' 表示小时,0s)

  • maxsize :(可选)如果未使用以下后缀之一,则以字节为单位保留在磁盘上的最大数据大小:'m' 或 'M' 表示兆字节或 'g' 或 'G' 表示千兆字节。 此参数仅在磁盘参数设置为“true”时有效。 该值不得小于使用 JFR.configure 命令设置的 maxchunksize 参数的值。 (STRING, 0 (无最大尺寸))

  • name :(可选)录音的名称。 如果未提供名称,则会生成名称。 记下命令响应中显示的生成名称,以便您可以将其与其他命令一起使用。 (STRING,系统生成的默认名称)

  • path-to-gc-root :(可选)用于在记录结束时保存垃圾收集 (GC) 根路径的标志。 路径信息对于查找内存泄漏很有用,但收集它很耗时。 仅当您怀疑某个应用程序存在内存泄漏时才打开此标志。 如果设置参数设置为“配置文件”,则收集的信息包括分配潜在泄漏对象的堆栈跟踪。 (布尔值,假)

  • settings :(可选)标识要记录哪些事件的设置文件的名称。 要指定多个文件,请用逗号 (',') 分隔名称。 如果文件不在 JAVA-HOME/lib/jfr 中,请包含路径。 以下配置文件包含在 JDK 的 JAVA-HOME/lib/jfr 目录中: 'default.jfc':以低开销收集一组预定义的信息,因此它对性能的影响最小,并且可以与运行的记录一起使用不断地; “profile.jfc”:提供比“default.jfc”配置文件更多的数据,但有更多的开销和对性能的影响。 当需要更多信息时,请在短时间内使用此配置。 使用“none”在没有预定义配置文件的情况下开始录制。 (字符串,JAVA-HOME/lib/jfr/default.jfc)

-XX:FlightRecorderOption:

除了repositorypathmemorysize和可能的stackdepth ,我不会更改以下任何选项。 它们是遗留的,或者供 JVM 支持工程师提供解决方法。 使用非默认值会增加崩溃或性能相关问题的风险。

  • globalbuffercount :(可选)全局缓冲区的数量。 此选项是一个遗留选项:更改 memorysize 参数以更改全局缓冲区的数量。 一旦 JFR 被初始化,这个值就不能改变。 (STRING,默认由 memorysize 的值决定)

  • globalbuffersize :(可选)全局缓冲区的大小,以字节为单位。 此选项是一个遗留选项:更改 memorysize 参数以更改全局缓冲区的大小。 一旦 JFR 被初始化,这个值就不能改变。 (STRING,默认由 memorysize 的值决定)

  • maxchunksize :(可选)如果未使用以下后缀之一,则单个数据块的最大大小(以字节为单位):'m' 或 'M' 表示兆字节或 'g' 或 'G' 表示千兆字节。 一旦 JFR 被初始化,这个值就不能改变。 (字符串,12M)

  • memorysize :(可选)总内存大小,如果不使用以下后缀之一,则以字节为单位:'m' 或 'M' 表示兆字节或 'g' 或 'G' 表示千兆字节。 一旦 JFR 被初始化,这个值就不能改变。 (字符串,10M)

  • repositorypath :(可选)记录在写入永久文件之前存储位置的路径。 (STRING,默认位置是操作系统的临时目录。在Linux 操作系统上,临时目录是/tmp。在Windwows 上,临时目录由TMP 环境变量指定。)

  • stackdepth :(可选)堆栈跟踪的堆栈深度。 将此值设置为大于默认值 64 可能会导致性能下降。 一旦 JFR 被初始化,这个值就不能改变。 (长,64)

  • thread_buffer_size :(可选)如果未使用以下后缀之一,则每个线程的本地缓冲区大小(以字节为单位):“k”或“K”表示千字节,“m”或“M”表示兆字节。 覆盖此参数可能会降低性能,因此不建议使用。 一旦 JFR 被初始化,这个值就不能改变。 (字符串,8k)

  • samplethreads :(可选)用于激活线程采样的标志。 (布尔值,真)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM