java - 为什么从串行GC切换到G1会增加RSS

标签 java memory garbage-collection jvm g1gc

使用串行 GC 时,我有一个示例应用程序,起始 RSS 大小为 600MB。有一次我使用 G1 RSS 内存, Bootstrap 增加到 800Mb 后。

有谁知道我如何分析该增加以及何时有任何 G1 调整选项来改善内存占用?

最佳答案

如果您确实最关心内存占用,请不要使用 G1。它是一个带有辅助数据结构的复杂 GC,并且它通过仅收集旧一代的碎片来避免执行完整的 GC。默认情况下,它还有一个暂停时间目标,这导致它更喜欢增加堆而不是错过其暂停时间目标。

坚持使用串行GC或吞吐量并行收集器。

您可以尝试以下操作:-XX:MaxHeapFreeRatio=30 -XX:MinHeapFreeRatio=20 -XX:InitiatingHeapOccupancyPercent=30,这应该告诉 G1 更积极地将内存退还给操作系统,并且尽早开始收集旧一代。

关于java - 为什么从串行GC切换到G1会增加RSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31098321/

相关文章:

java - Java中的类名约定

javascript - DOM 节点未被垃圾回收

c# - 在运行时查找对对象的引用

java - 从 Jinternal Frame 刷新 JFrame

java - Spring 3 : @Autowired dao fields are null in service beans with @Transactional annotation

c - 如何在C中实现一个巨大的矩阵

c# - C# 中的 C 回调函数问题 - 如何将值传递给指针?

C#逻辑内存配置 View

Python垃圾回收发生在变量重置中

java - 用java进行游戏模拟有问题