【发布时间】:2019-05-16 19:30:38
【问题描述】:
我有 6g 的堆,而 gc 总是以 ~4.5g 的堆负载开始工作。 现在我设置 -Xmx20g(20 GB 堆大小)和 -Xms16g(初始堆大小为 16 GB),但和以前一样,GC 在 ~4.5g 内存处激活。 为什么以及如何强制 gc 使用所有这些内存? GC是标准的。爪哇 8。
【问题讨论】:
-
你能分享年轻一代和老一代的实际大小吗?似乎您经历了年轻一代的收集,尽管尚不清楚为什么在将堆空间从 6GB 增加到 20GB 后“阈值”没有改变(特别是如果您没有明确设置年轻一代的大小)。另外,您使用哪种 GC?
-
最好实际查看 GC 日志并在此处分享相关部分。
-
让我问你这个 - 1) 为什么你关心这个? 2) 为什么,以及如何强制 gc 使用所有这些内存 - 这是什么意思?
-
年轻一代很可能是 ~4.5 GB。尝试添加
-Xmn16g,尽管这可能不适合您的应用程序。
标签: garbage-collection jvm heap-memory