首页 > 解决方案 > g1 GC基于什么算法来调整Eden区域的大小

问题描述

我在我的应用程序中发现了一个 GC 问题,年轻的 GC 突然变成了正常的 10 倍,这是由于 eden 区域很小。通过gc log,我发现eden size通常会变成5000M-7000M,而遇到问题时它会保持528M。我不知道发生了什么导致这样的问题。我已经阅读了很多博客来研究调整 eden 区域大小的算法,并且大多数博客只是告诉我,eden 区域大小是根据之前的 gc 暂停时间自动更改的。在https://product.hubspot.com/blog/g1gc-fundamentals-lessons-from-taming-garbage-collection中只能找到一个模糊的答案,

如果 (recent_STW_time < MaxGCPauseMillis)

eden = min(100% - G1ReservePercent - Tenured, G1MaxNewSizePercent)

别的

eden = min(100% - Tenured, G1NewSizePercent)

但据此,我的应用程序中的伊甸园区域大小应为 4000-6500M。

标签: g1gc

解决方案


推荐阅读