Java Flight Recorder列出了OpenJDK 8和OpenJDK 11的VM选项的完整列表

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?