针对OpenJDK 8和OpenJDK 11的Java飞行记录器虚拟机选项全面列表

t5zmwmid  于 2023-02-20  发布在  Java
关注(0)|答案(1)|浏览(200)

有没有一种方法可以获得Java飞行记录器(JFR)的VM选项的完整列表?我对OpenJdk8和OpenJdk11特别感兴趣
到目前为止,我发现这个列表非常有用https://chriswhocodes.com/hotspot_options_jdk8.html

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
是否有任何资源可以提供JFR可用的选项列表?

vwkv1x7d

vwkv1x7d1#

我认为可以在jcmd JFR.start和JFR.configure文档中找到对JFR的VM选项最全面和最新的描述
https://docs.oracle.com/en/java/javase/15/docs/specs/man/jcmd.html

-XX:开始飞行记录:
*delay(可选)开始记录前等待的时间长度(INTEGER后跟s表示秒,后跟m表示分钟,后跟h表示小时)
*disk:(可选)表示在记录时也将数据写入磁盘的标志(BOOLEAN,true)
*转储出口:用于在Java虚拟机(JVM)关闭时将记录写入磁盘的标志。如果设置为“true”且未指定filename值,则记录将写入进程启动目录中的文件。文件名是系统生成的名称,包含进程ID、记录ID和当前时间戳。(例如:热点-pid-33507-标识符-1-2019_12_12_10_41.jfr)(布尔值,假)
*持续时间:要记录的时间长度。请注意,0 s表示永远(INTEGER后跟s表示秒,后跟m表示分钟,后跟h表示小时)
*文件名:记录停止时要写入飞行记录数据的文件的名称。如果未指定文件名,则根据PID和当前日期生成文件名,并将其放置在启动进程的目录中。文件名也可以是目录,在这种情况下,根据指定目录中的PID和当前日期生成文件名。(字符串,无默认值)
*maxage:(可选)将记录的数据保留在磁盘上的最长时间。仅当disk参数设置为true时,此参数才有效。注意0 s表示永远。(INTEGER后跟"s“表示秒,”m“表示分钟,”h“表示小时,0 s)
*最大大小:如果未使用以下后缀之一,则保留在磁盘上的数据的最大大小(以字节为单位):“m”或“M”表示兆字节,“g”或“G”表示千兆字节。此参数仅在disk参数设置为“true”时有效。此值不得小于用JFR.configure命令设置的maxchunksize参数值。(字符串,0(无最大大小))
*name:(可选)记录的名称。如果未提供名称,则会生成一个名称。请记下命令响应中显示的生成名称,以便将其用于其他命令。(STRING,系统生成的默认名称)
*到GC根目录的路径:用于保存垃圾回收路径的标志(GC)根目录。路径信息对于查找内存泄漏很有用,但收集它非常耗时。仅当怀疑应用程序存在内存泄漏时才启用此标志。如果将settings参数设置为“profile”,则收集的信息包括分配潜在泄漏对象的堆栈跟踪。(BOOLEAN,false)
*设置:标识要记录哪些事件的设置文件的名称。要指定多个文件,请使用逗号(',')分隔名称。如果文件不在JAVA-HOME/lib/jfr中,请包括路径。以下概要文件随JDK一起包含在JAVA-HOME/lib/jfr目录中:“默认. jfc”:以较低的开销收集预定义的信息集,因此它对性能的影响最小,并且可以与连续运行的记录一起使用;“配置文件. jfc”:与“default.jfc”配置文件相比,提供更多数据,但开销更大,对性能的影响更大。在需要更多信息时,可短时间使用此配置。使用“none”可在没有预定义配置文件的情况下启动记录。(STRING,JAVA-HOME/lib/jfr/default.jfc)
-XX:飞行记录器选项:

除了repositorypathmemorysizestackdepth之外,我不会更改下面的任何选项。它们是遗留的,或者是JVM支持工程师提供的变通方法。使用非默认值将增加崩溃或性能相关问题的风险。

*全局缓冲区计数:全局缓冲区数。此选项是旧选项:更改内存大小参数以更改全局缓冲区的数量。一旦初始化JFR,就不能更改此值。(字符串,默认值由内存大小的值确定)
*全局缓冲区大小:全局缓冲区的大小(以字节为单位)。此选项是旧选项:更改内存大小参数以更改全局缓冲区的大小。一旦初始化JFR,就不能更改此值。(字符串,默认值由内存大小的值确定)
*最大区块大小:如果未使用以下后缀之一,则单个数据区块的最大大小(以字节为单位):'m'或'M'表示兆字节,或'g'或'G'表示千兆字节。一旦JFR初始化,就不能更改此值。(字符串,12 M)
*内存大小:总内存大小(如果未使用以下后缀之一,则以字节为单位):'m'或'M'表示兆字节,或'g'或'G'表示千兆字节。一旦JFR初始化,就不能更改此值。(字符串,10 M)

*存储库路径:录制内容写入永久文件之前的存储位置的路径。(STRING,默认位置是操作系统的临时目录。在Linux操作系统上,临时目录是/tmp。在Windows上,临时目录由TMP环境变量指定。)
*堆叠深度:堆栈跟踪的堆栈深度。将此值设置为大于默认值64可能会导致性能下降。初始化JFR后,将无法更改此值。(LONG,64)
*线程缓冲区大小:如果未使用以下后缀之一,则为每个线程的本地缓冲区大小(以字节为单位):“k”或“K”表示千字节,“m”或“M”表示兆字节。覆盖此参数会降低性能,不建议这样做。JFR一旦初始化,就不能更改此值。(字符串,8 k)
*示例线程:激活线程采样的标志。(BOOLEAN,true)

相关问题