我们有性能构建,它在打开以下标志的情况下生成我们的应用程序:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=dumponexit=true,dumponexitpath=/tmp/ImaginaryApplication/logs/flightRecorder.jfr -XX:StartFlightRecording=defaultrecording=true,settings=MyCustomSetting
自定义设置是通过 Flight Recorder UI 创建的,所有设置均已打开。我想与我的问题相关的重要部分如下:
<selection name="gc-level" default="all" label="Garbage Collector">
<option label="Off" name="off">off</option>
<option label="Normal" name="detailed">normal</option>
<option label="All" name="all">all</option>
</selection>
<condition name="gc-enabled-normal" true="true" false="false">
<or>
<test name="gc-level" operator="equal" value="normal"/>
<test name="gc-level" operator="equal" value="all"/>
</or>
</condition>
<condition name="gc-enabled-all" true="true" false="false">
<test name="gc-level" operator="equal" value="all"/>
</condition>
飞行记录是在构建停止时生成的。但是,我不是 100% 确信它会记录所有内容。首先,在 Memory -> Garbage Collection 页面中只报告了少量 GC。我知道这一点,因为我们还打开了将 GC 写入文件的标志。GC 比飞行记录器中报告的要多得多。更重要的是,我担心内存分配结果没有记录准确的信息(就像 GC 事件一样)。在这种情况下,我们可能会花费大量精力来调整错误的区域。
我错过了这里的任何设置吗?
先感谢您!