0

我想分析一个相当巨大的Java VM进程的内存使用情况。分配内存分析器和任务管理器之间的内存差异

启动Eclipse内存分析工具时,我意识到的一件事是所谓的分配内存之间的巨大差异:Windows任务管理器/ CMD任务列表显示大约5,5GB,而内存分析器显示只有1,1GB。什么导致了这种差异?

回答

1

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

我希望这解释了基本知识(这里有很多关于JVM和OS内存管理的更多细节)。