【发布时间】:2018-01-30 18:37:09
【问题描述】:
我正在调查 Oracle Java Mission Control 以进行内存消耗调查。首先,我使用了 JDK 8 示例中提供的 Flight Recording wldf.jfr。我对 Total TLAB Size 与 Total Object Size 的列感到困惑:
对于第一个线程,Total Object Size 为 1.52MB,但Total TLAB Size 为 809.91MB(大小不同)。这是如何解释的?该应用程序是使用
执行的-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m
到目前为止,我的理解是每个线程都有一个 TLAB。 TLAB 可以退役,并根据(以及其他因素)的值为线程分配一个新的
-XX:TLABWasteTargetPercent
退役 TLAB 的数据留在 Eden 中,他们的命运由下一次 Minor GC 决定。那么 TLABs 列是否指的是退休/分配总数?这反过来应该表明TLAB 总大小是对这些新 TLAB 分配的累积度量。
我可以得出关于内存管理的任何结论吗?也许过多的 TLAB 分配可能会建议增加 TLAB 的大小?
【问题讨论】: