使用串行GC时,我的示例应用程序的RSS大小为600MB。一旦我使用G1 RSS内存后,bootstrap增加到800Mb。
是否有人知道我如何分析这种增加以及何时有任何G1调整选项来改善内存占用?
答案 0 :(得分:2)
如果您真的非常关心内存占用,请不要使用G1。这是一个具有辅助数据结构的复杂GC,它通过仅收集旧的一块餐,避免了完整的GC。它默认情况下还有一个暂停时间目标,这使得它更喜欢增加堆而不是错过它的暂停时间目标。
坚持使用串行gc或吞吐量并行收集器。
你可以尝试以下方法:-XX:MaxHeapFreeRatio=30 -XX:MinHeapFreeRatio=20 -XX:InitiatingHeapOccupancyPercent=30
,这应该告诉G1更积极地回收操作系统的内存,并尽快开始收集旧的。