我正在寻找一种方法,只记录一个单一的线程在JDK飞行记录.我正在使用jdk.jfr.RecordingAPI创建飞行记录,但没有找到将事件限制在单个线程中的方法.
我知道之后在JMC中我可以限制到单个线程,但我想在事前配置它,以将文件大小保持在最小,并使分析更容易.
我对此拥有的用例是:
我正在处理一个多线程系统,其中多个作业(job)并行运行.对于某些长期运行的工作,我想创建一个按需飞行记录.为了使分析更容易,并将文件大小保持在最小,我希望只记录一个线程.
我正在寻找一种方法,只记录一个单一的线程在JDK飞行记录.我正在使用jdk.jfr.RecordingAPI创建飞行记录,但没有找到将事件限制在单个线程中的方法.
我知道之后在JMC中我可以限制到单个线程,但我想在事前配置它,以将文件大小保持在最小,并使分析更容易.
我对此拥有的用例是:
我正在处理一个多线程系统,其中多个作业(job)并行运行.对于某些长期运行的工作,我想创建一个按需飞行记录.为了使分析更容易,并将文件大小保持在最小,我希望只记录一个线程.
不可能对每个线程的JDK/JVM事件进行预过滤.您最多只能在事后对其进行过滤,例如:
$ jfr scrub --include-threads main recording.jfr
这样,您可以降低文件大小,但不会减少开销.您也可以使用RecordingFile.write方法以编程方式完成此操作.
过滤可以在JDK 11或更高版本的记录上完成,即使API和scrub命令只存在于JDK 19+中.