如何解决Java Flight Recorder列出了OpenJDK 8和OpenJDK 11的VM选项的完整列表
是否可以获取Java Flight Recorder(JFR)的VM选项的完整列表。 我对OpenJdk 8和OpenJdk 11尤其感兴趣
到目前为止,我发现此列表非常有用 https://chriswhocodes.com/hotspot_options_jdk8.html
也
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
是否有任何资源可以提供JFR可用的选项列表?
解决方法
我认为可以在jcmd JFR.start和JFR.configure的文档中找到有关JFR的VM选项的最全面,最新的说明
https://docs.oracle.com/en/java/javase/15/docs/specs/man/jcmd.html
-XX:StartFlightRecording:
-
延迟(可选) 开始录制之前要等待的时间(INTEGER,然后是 “ s”代表秒,“ m”代表分钟,或“ h”代表小时)
-
磁盘 :(可选)用于在记录时也将数据写入磁盘的标志(BOOLEAN,true)
-
dumponexit :(可选)在Java虚拟机(JVM)关闭时用于将记录写入磁盘的标志。如果设置为“ true”,并且没有为文件名提供任何值,则将记录写入启动过程的目录中的文件中。文件名是系统生成的名称,其中包含进程ID,记录ID和当前时间戳。 (例如:hotspot-pid-33507-id-1-2019_12_12_10_41.jfr)(BOOLEAN,false)
-
持续时间 :(可选)记录的时间长度。请注意,0表示永远(INTEGER,后跟“ s”表示秒,“ m”表示分钟或“ h”表示小时)
-
文件名 :(可选)停止记录时将飞行记录数据写入的文件的名称。如果未提供文件名,则根据PID和当前日期生成文件名,并将其放置在启动过程的目录中。文件名也可以是目录,在这种情况下,文件名是根据PID和指定目录中的当前日期生成的。 (STRING,没有默认值)
-
最大容量 :(可选)将已记录数据保留在磁盘上的最长时间。仅当disk参数设置为true时,此参数才有效。注意0代表永远。 (INTEGER后跟“ s”代表秒,“ m”代表分钟,“ h”代表小时,0秒)
-
maxsize :(可选)如果未使用以下后缀之一,则保留在磁盘上的最大数据大小(以字节为单位):'m'或'M'表示兆字节或' g”或“ G”表示千兆字节。仅当disk参数设置为“ true”时,此参数才有效。该值不得小于使用JFR.configure命令设置的maxchunksize参数的值。 (STRING,0(无上限))
-
名称 :(可选)记录的名称。如果未提供名称,则会生成一个名称。记下在命令响应中显示的生成名称,以便您可以将其与其他命令一起使用。 (STRING,系统生成的默认名称)
-
gc根目录路径 :(可选)用于在记录结束时保存垃圾收集(GC)根目录的路径的标志。路径信息对于发现内存泄漏很有用,但收集起来很费时间。仅当您有怀疑存在内存泄漏的应用程序时才打开此标志。如果将settings参数设置为“ profile”,则收集的信息包括从中分配潜在泄漏对象的堆栈跟踪。 (布尔,假)
-
设置 :(可选)标识要记录哪些事件的设置文件的名称。要指定多个文件,请用逗号(',')分隔名称。如果文件不在JAVA-HOME / lib / jfr中,则包括路径。 JDK包含在JAVA-HOME / lib / jfr目录中的以下配置文件:'default.jfc':以低开销收集预定义的信息集,因此对性能的影响最小,可与运行的记录一起使用连续地'profile.jfc':比'default.jfc'配置文件提供更多的数据,但具有更多的开销和对性能的影响。需要更多信息时,请在短时间内使用此配置。使用“无”可在没有预定义配置文件的情况下开始录制。 (STRING,JAVA-HOME / lib / jfr / default.jfc)
-XX:FlightRecorderOption:
除了 repositorypath , memorysize 和 stackdepth 之外,我不会更改以下任何选项。它们是旧版还是JVM支持工程师可以提供的解决方法。使用非默认值会增加发生崩溃或性能相关问题的风险。
-
globalbuffercount :(可选)全局缓冲区的数量。此选项是一个旧选项:更改memorysize参数以更改全局缓冲区的数量。初始化JFR后就无法更改此值。 (STRING,默认值由memorysize的值确定)
-
globalbuffersize :(可选)全局缓冲区的大小,以字节为单位。此选项是一个旧选项:更改memorysize参数以更改全局缓冲区的大小。初始化JFR后就无法更改此值。 (STRING,默认值由memorysize的值确定)
-
maxchunksize :(可选)如果未使用以下后缀之一,则单个数据块的最大大小(以字节为单位):'m'或'M'表示兆字节或'g'或“ G”代表千兆字节。初始化JFR后就无法更改此值。 (STRING,1200万)
-
内存大小 :(可选)总内存大小,如果不使用以下后缀之一,则以字节为单位:'m'或'M'表示兆字节,或者'g'或'G ”。初始化JFR后就无法更改此值。 (STRING,1000万)
-
repositorypath :(可选)在将记录写入永久文件之前存储记录的位置的路径。 (STRING,默认位置是操作系统的临时目录。在Linux操作系统上,该临时目录是/ tmp。在Windwows上,该临时目录由TMP环境变量指定。)
-
堆栈深度 :(可选)堆栈跟踪的堆栈深度。将此值设置为大于默认值64可能会导致性能下降。初始化JFR后,无法更改此值。 (长64)
-
thread_buffer_size :(可选)如果未使用以下后缀之一,则每个线程的本地缓冲区大小(以字节为单位):'k'或'K'表示千字节,或'm'或“ M”代表兆字节。覆盖此参数可能会降低性能,因此不建议这样做。初始化JFR后,无法更改此值。 (STRING,8k)
-
samplethreads :(可选)用于激活线程采样的标志。 (布尔,是真的)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。