应用程序使用的内存大于实际堆转储大小
Memory used by application is larger than actual heap dump size
我是 运行 Apache Ignite 应用程序。当我使用 linux free
查看内存使用情况时,我得到的已用内存为 9.8 GB。但是当我使用 eclipse MAT 进行堆转储时,它的大小只有大约 1.8 GB。为什么会这样? ignite 中分配的默认堆内存为 21 GB。我也没有做过任何GC调整。
当 Eclipse 进行堆转储时,它很可能会强制执行完整的垃圾回收,这样您就只能看到内存中实际存在的对象。 JVM本身并不会这样做,因为堆很大,还有很多可用内存。顺便说一句,这最终会使您的 Ignite 节点在很长一段时间内无响应。我建议每个节点分配的内存不要超过 10-12GB。
我是 运行 Apache Ignite 应用程序。当我使用 linux free
查看内存使用情况时,我得到的已用内存为 9.8 GB。但是当我使用 eclipse MAT 进行堆转储时,它的大小只有大约 1.8 GB。为什么会这样? ignite 中分配的默认堆内存为 21 GB。我也没有做过任何GC调整。
当 Eclipse 进行堆转储时,它很可能会强制执行完整的垃圾回收,这样您就只能看到内存中实际存在的对象。 JVM本身并不会这样做,因为堆很大,还有很多可用内存。顺便说一句,这最终会使您的 Ignite 节点在很长一段时间内无响应。我建议每个节点分配的内存不要超过 10-12GB。