首页 文章

JVM Profiler与Mac OS X活动监视器中的内存使用情况

提问于
浏览
9

我一直在分析我的java应用程序,并且对我报告的应用程序的内存使用情况感到困惑(通过eclipse运行) . 它总是与分析器报告的内存使用量大不相同,并且实际上甚至不匹配 .

应用程序的JVM标志是:

-Xmx1G 
-Xms1G 	
-XX:MaxMetaspaceSize=256M
-XX:CompressedClassSpaceSize=256M

此图像显示进程“java”的报告内存为1.67GB . 当我双击该过程时,细分显示1.15GB的“实际内存大小”和各种其他内存指标 .

Reported Mac OS X memory usage

飞行 Logger 显示应用程序坚持其1GB堆大小 . 我进行了测试,表明它也符合其元空间限制 .

Flight Recorder memory usage

我的问题有两个:1)任何想法为什么报告的内存使用在过程(由Mac OS X报告)和分析器之间是如此不同? 2)知道为什么活动监视器中显示的内存与进程内存崩溃之间存在差异?

1 回答

  • 4

    1)真实内存就是一切:堆栈MetaSpace(以前称为PermGen)CompressedClassSpaceSize等 . 您将堆限制为1GiB,如Flight Recorder所示 . 操作系统将所有内容显示在一起,而不仅仅是堆,这是这种差异的起源 . 它不是特定于OS / JVM的(即,在* nix,Windows上尝试它,你会看到相同的) .

    2)这是特定于操作系统的 . 对于Mac OS,请参阅this very detailed answer

相关问题