G1GC的内存使用具有误导性

时间:2019-05-10 14:00:45

标签: java g1gc

我们将应用程序从CMS迁移到G1GC,并发布了堆监视系统正在触发高堆使用警报。最大堆使用率超过总堆的80%,几乎是我们使用CMS所获得的两倍。内存图呈锯齿状,使用率高和低。

在查看GC日志时,我们注意到,为了减少GC循环的频率,G1GC将大约50%的堆分配给了Eden空间。伊甸园中的大多数对象是临时对象,将在下一个GC中清除。由于G1GC延迟了GC周期,因此报告的高堆的主要部分由临时对象组成。

基本上,监视系统捕获Memory_HeapMemoryUsage MBean以获得内存快照。但是,按照G1GC的工作方式,此数据具有误导性。 我们可以更改监视系统捕获数据的方式,但是它将变成G1GC特定的吗?

是否有更好的方法独立于GC实施?

0 个答案:

没有答案