gpt4 book ai didi

java - Java Mission Control 中 TLAB 总大小与对象总大小

转载 作者:行者123 更新时间:2023-12-02 11:41:15 24 4
gpt4 key购买 nike

我正在研究 Oracle Java Mission Control 来进行内存消耗调查。首先,我使用了 JDK 8 示例中提供的飞行记录 wldf.jfr。我对 Total TLAB SizeTotal Object Size 列感到困惑:

Flight Recording对于第一个线程,总对象大小为 1.52MB,但总 TLAB 大小为 809.91MB(大小不同)。这是如何解释的呢?该应用程序是使用执行的

-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m

到目前为止我的理解是每个线程都有一个 TLAB。 TLAB 可以退役,并根据(以及其他因素)的值为线程分配一个新的 TLAB。

-XX:TLABWasteTargetPercent

退役的TLAB数据仍保留在Eden中,它们的命运由下一次Minor GC决定。那么TLABs列是否指的是退休/分配总数?这反过来表明,总 TLAB 大小是新 TLAB 分配的累积度量。

我可以得出有关内存管理的任何结论吗?也许太多的 TLAB 分配可能会建议增加 TLAB 的大小?

最佳答案

“新 TLAB 中的分配”事件有点棘手,它代表一个对象分配,这会导致为线程分配一个新的 TLAB。 (启发式地假设 TLAB 仅包含与第一个对象类型相同的对象)该事件包含有关对象分配本身和 TLAB 的信息。

“总对象大小”列(默认情况下未启用)只是将导致新 TLABS 的各个对象的对象大小相加,因此这确实是一个相当奇怪的统计数据。

在 JDK 9 中包含的 JMC 6 中,我相信我们已经删除了这个特定的计算。

关于java - Java Mission Control 中 TLAB 总大小与对象总大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48528338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com