0
我想分析一個相當巨大的Java VM進程的內存使用情況。分配內存分析器和任務管理器之間的內存差異
啓動Eclipse內存分析工具時,我意識到的一件事是所謂的分配內存之間的巨大差異:Windows任務管理器/ CMD任務列表顯示大約5,5GB,而內存分析器顯示只有1,1GB。什麼導致了這種差異?
我想分析一個相當巨大的Java VM進程的內存使用情況。分配內存分析器和任務管理器之間的內存差異
啓動Eclipse內存分析工具時,我意識到的一件事是所謂的分配內存之間的巨大差異:Windows任務管理器/ CMD任務列表顯示大約5,5GB,而內存分析器顯示只有1,1GB。什麼導致了這種差異?
Eclipse Memory Analyzer (MAT)看到並報告的內容是Java 堆的大小,即由Object
實例組成的對象圖。操作系統看到並報告的是該區域的大小RAM JVM已向操作系統請求存儲Java堆(及其內部數據結構)。此內存通常不會完全填滿live Java對象;一些對象可能已經是死了(並且沒有被看作是MAT),但還沒有被收集,並且垃圾收集器本身也需要一些空間來移動物體。
我希望這解釋了基本知識(這裏有很多關於JVM和OS內存管理的更多細節)。