Skip Headers
上一页
上一页
 
下一页
下一页

了解数据流

JFR 从 JVM (通过内部 API) 和 Java 应用程序 (通过 JFR API) 收集数据。此数据存储在小型线程本地的缓冲区中,这些缓冲区会刷新到内存中的全局缓冲区。接下来,内存中的全局缓冲区内的数据将写入到磁盘。磁盘写入操作开销很高,因此应该仔细选择需要启用记录的事件数据,尽可能地减少写入操作。二进制格式的记录文件非常紧凑,应用程序可以高效地读取和写入。

不同缓冲区之间没有信息重叠。具体数据块将只在内存或磁盘上可用,但永远不会同时在两处可用。这样会有以下隐患:

在某些情况下,JVM 会丢弃事件顺序以确保不会崩溃。任何无法快速写入磁盘的数据将会放弃。发生这种情况时,记录文件中将包含受影响时段的相关信息。此信息也会记录到 JVM 的日志记录工具中。

您可以配置 JFR 以便不将任何数据写入磁盘。在此模式中,全局缓冲区起到了循环缓冲区的作用,在缓冲区变满时删除最早的数据。这种开销极低的操作模式仍会收集问题根本原因分析所需的全部关键数据。由于最近的数据始终在全局缓冲区中可用,只要操作或监视系统检测到问题,这些数据可以根据需要写入磁盘。但是,在这种模式下,只有最近几分钟的数据可用,因此只包含最新的事件。如果需要获取时间段较长的完整操作历史记录,请使用定期将数据写入磁盘的默认模式。