最近,我一直在努力优化一些代码(在计算时间和所需的最大内存中)。要知道是否存在优化内存成本的潜在收益,我使用JProfiler。 通常
现在,我处于第二种情况,GC活动图表显示峰值,但均低于2%(见下图)。我该怎么理解?
默认情况下,我的理解是GC Activity曲线的sum / integrale是用于收集数据的cpu总百分比的估计值。因此,这意味着远远低于最大2%
这是正确的吗?我错过了什么吗?
答案 0 :(得分:4)
默认情况下,我的理解是GC的总和/整数 活动曲线是对所用cpu总百分比的估计 收集数据。因此,这意味着远远低于最大2%
这是对的吗?
是的,这是正确的。如果要查找临时对象的分配位置,请转到实时内存 - >分配调用树,然后选择“垃圾收集对象”作为活动模式
要查看任何分配点或分配热点的分类,请使用“显示类”调用树分析。
答案 1 :(得分:2)
默认情况下,我的理解是GC活动曲线的总和/积分是对用于收集数据的cpu总百分比的估计。
应该是,是的。
所以这里意味着远远低于最高2%
max 在这里具有欺骗性。如果使采样间隔足够小,则最大值将是GCing花费的时间片的100%。也就是说,该切片小于GC暂停持续时间。因此,这些峰值已经是一些较大时间片的平均值。
我应该如何理解?
您的应用程序可能没有花太多时间在GC上。但是您的图表仅涵盖相对较少的时间,因此可能无法反映主要集合或并发周期。如果您关心延迟而不仅仅是吞吐量,解释JVM的GC日志将提供更多详细信息。