1

我想分析一个非常庞大的 Java VM 进程的内存使用情况。

我在启动 Eclipse 内存分析工具时意识到的一件事是所谓的分配内存之间存在巨大差异:Windows 任务管理器/CMD 任务列表显示大约 5.5GB,而内存分析器仅显示 1.1GB。造成这种差异的原因是什么?

4

1 回答 1

1

Eclipse 内存分析器 (MAT)看到和报告的是 Java的大小,即由Object实例组成的对象图。操作系统看到和报告的是JVM 向操作系统请求存储 Java 堆(及其内部数据结构)的RAM中区域的大小。该内存通常不会被活动的Java 对象完全填满。一些对象可能已经死了(并且看不到是 MAT)但还没有被收集,垃圾收集器本身也需要一些空间来移动对象。

我希望这能解释基础知识(关于 JVM 和 OS 内存管理的更多细节)。

于 2017-04-07T08:28:47.677 回答