java - 应用程序使用的内存大于实际堆转储大小

标签 java memory ignite gridgain

我正在运行 Apache Ignite 应用程序。当我使用 linux free 看到内存使用情况时,我得到的已用内存为 9.8 GB。但是当我使用 eclipse MAT 进行堆转储时,其大小仅为 1.8 GB 左右。为什么会发生这种情况? ignite 中分配的默认堆内存为 21 GB。我也没有做过任何 GC 调优。

最佳答案

当 Eclipse 进行堆转储时,它很可能会强制进行完全垃圾回收,以便您只能看到实际在内存中的对象。 JVM本身不会这样做,因为堆非常大,并且仍然有大量可用内存。顺便说一句,这种情况最终会导致您的 Ignite 节点在很长一段时间内无响应。我建议每个节点分配的内存不要超过 10-12GB。

关于java - 应用程序使用的内存大于实际堆转储大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40906307/

相关文章:

iphone - iOS 应用程序因常驻内存使用量很少而被抛弃

java - Apache 点燃: Unable to start with basic XML config containing expiration policy

ignite - Apache Ignite 的主要思想是什么?

java - 动态和以编程方式创建布局

c++ - OpenGL 内存泄漏

java - 如何确定集合是否为空

java - Eclipse 内存分析器 - 尝试获取堆转储时出错

java - 仅查询 Apache Ignite 的缓存以获取本地备份条目

java - 使用 java 程序在 linux 终端中运行命令?

java - RabbitMQ 使用 Spring 直接回复的问题