【问题标题】:Memory usage in JVM profiler vs. Mac OS X Activity MonitorJVM 分析器与 Mac OS X 活动监视器中的内存使用情况
【发布时间】:2017-10-30 04:16:20
【问题描述】:

我一直在分析我的 java 应用程序,并且对我的应用程序报告的内存使用情况感到困惑(通过 eclipse 运行)。它与分析器报告的内存使用情况总是有很大不同,甚至与自身都不匹配。

应用程序的 JVM 标志是:

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

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

飞行记录器显示应用程序遵守其 1GB 堆大小。我进行的测试表明它也遵守其元空间限制。

我的问题有两个: 1)知道为什么报告的内存使用情况在进程(由Mac OS X报告)和分析器之间如此不同吗? 2) 知道为什么 Activity Monitor 中显示的内存与进程内存故障之间存在差异吗?

【问题讨论】:

    标签: java macos memory memory-management memory-leaks


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 2011-10-11
      • 1970-01-01
      • 2013-05-17
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      相关资源
      最近更新 更多