2

我有一个资源密集型、基于 java-8 的命令行应用程序,我经常使用飞行记录器对其进行分析。我经常注意到的是,当我在任务控制中打开飞行记录器文件(jfr)时,我会看到该进程运行的完整时间跨度,但我错过了该时间窗口前 60-70% 的事件。

我试过使用飞行记录器选项,这是我目前使用的:

-Djava.library.path=/some/path/lib -Xmx50G -XX:+UnlockCommercialFeatures -XX:+UseG1GC -XX:+FlightRecorder -XX:StartFlightRecording=name=MyRecording,settings=profile -XX:FlightRecorderOptions=defaultrecording=true ,maxsize=1g,maxage=1h,dumponexit=true,dumponexitpath=/some/path"

我希望这会自动捕获记录,当过程完成时,记录将保存到 /some/path,并且它保存的文件将达到千兆字节。有谁知道正确的供应选择是什么?

4

1 回答 1

3

我会回答我自己的问题。经过一些实验和反复试验后,您似乎需要添加“disk=true”。

所以最终的java args变成:

-Djava.library.path=/some/path/lib -Xmx50G -XX:+UnlockCommercialFeatures -XX:+UseG1GC -XX:+FlightRecorder -XX:StartFlightRecording=name=MyRecording,settings=profile -XX:FlightRecorderOptions=defaultrecording=true ,disk=true,maxsize=1g,maxage=1h,dumponexit=true,dumponexitpath=/some/path"

于 2016-02-22T13:14:04.127 回答