g1gc - 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。
解决方案
推荐阅读
- ruby-on-rails - 如何使用 PostgreSQL 为 Rails 设置 Github Actions
- mysql - 如何设计 MySQL 表结构以进行搜索优化
- c++ - 无法使用迭代器来查找类对象。(二进制 '==': 'userInfo' 没有定义这个操作符)
- android - 在 Fragment 中选择微调器项目时复选框消失
- c# - 使用实体框架将图片上传到 SQL?
- sql - 我们可以将数据库从 Azure Sql 数据库直接迁移到 Azure postgreSql 数据库吗
- c++ - OpenGL相机移动程序顶点着色器问题
- javascript - 获取具有特定类而不是特定样式的元素
- sass - MdC Ripple 保持课程添加--背景焦点
- ios - 登录后SwiftUI LoginView不会消失