我想分析一个相当大的Java进程的内存使用情况。
在启动Eclipse内存分析工具时,我意识到了所谓的分配内存之间的巨大差异: Windows任务管理器/ CMD任务列表显示大约5,5GB,而内存分析器仅显示1,1GB。是什么导致了这种差异?
发布于 2017-04-07 08:28:47
日食内存分析器(MAT)看到并报告的是堆的大小,即由Object实例组成的对象图。操作系统看到并报告的是内存中区域的大小,JVM从操作系统中请求将Java堆(及其内部数据结构)存储在其中。这个内存通常没有被活动的Java对象完全填满;有些对象可能已经死了(没有被看到是MAT),但是还没有被收集,垃圾收集器本身也需要一些空间来移动对象。
我希望这能解释基本原理( JVM和OS内存管理都有更多的细节)。
https://stackoverflow.com/questions/42159892
复制相似问题