gpt4 book ai didi

java - ParallelOldGC 垃圾收集器中旧空间的阈值

转载 作者:行者123 更新时间:2023-11-29 08:48:30 26 4
gpt4 key购买 nike

我在我的应用程序中使用 ParallelOldGC 作为垃圾收集器。最大堆大小设置为 2 GB 并且正在处理 Java 热点 6、27 更新。

由于旧空间已满,我的应用程序创建了如此多的长生命周期对象。因此,根据并行 GC 算法,当旧空间快满时会触发 Full GC。由于堆大小为 2 GB,因此清理旧空间收集器需要超过 100 秒,这是 Not Acceptable 。

我正在考虑为旧空间设置阈值,比如 30,这样当旧空间完成 30% 时,将调用 Full GC,因为此解决方案会增加 FullGC 计数,但会减少应用程序暂停时间。

我观察到 CMS 包含这样的设施 XX:CMSInitiatingOccupancyFraction 但由于 CMS 的一些缺点无法切换到 CMS。那么在 ParallelOldGC 中是否有任何设施可以设置

提前致谢。

最佳答案

As the heap size is 2 GB so to clean the old space the collector take more than 100 seconds which is not acceptable.

由于您实际要解决的是较长的停顿时间,您可以通过 -XX:MaxGCPauseMillis= 设置停顿时间目标,收集器将尝试满足那个。

它可能由于各种原因而无法满足它,例如因为不允许在收集时消耗足够的 CPU 时间(通过 GCTimeRatio),或者仅仅是因为您有太多旧的 Activity 对象以至于无法满足目标(在这些情况下使用 G1 或 CMS)。

关于java - ParallelOldGC 垃圾收集器中旧空间的阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23911521/

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