JProfiler "Recorded Objects" 显示不同的结果 with/without System.gc 即使会话设置说要记录 "Live and GCed objects"

JProfiler "Recorded Objects" shows different results with/without System.gc even though session settings say to record "Live and GCed objects"

我的会话设置告诉 JProfiler 记录 "Live an GCed objects"。我将会话配置为在 VM 启动时开始记录 "Allocation data"。录制在 VM 退出时停止。

当我 运行 我的测试时,"Recorded Objects" 显示大约 8 个 mio 分配,大小为 500MB。如果我在测试结束时添加 System.gc(),"Recorded Objects" 将下降到 800k 分配,大小为 135MB。

为什么会这样?如果我告诉 JProfiler 也记录 GCed 对象,我假设在 "Recorded Objects" 中看到整个对象吞吐量。

将 "Liveness mode" 切换为 "Live and garbage collected objects":