【问题标题】:Used vs Max vs Size -Jvisualvm?使用与最大与大小 -Jvisualvm?
【发布时间】:2017-03-05 06:35:40
【问题描述】:

在 jvisual vm 中,我在 Monitor>Heap 下看到三个属性,我看到 3 个属性用不同的数字描述内存细节

  1. 尺寸:?
  2. Used :- 我相信这是实际使用的内存
  3. Max :- 我相信这是分配给 java 进程的最大堆大小(用 Xmx 指定)

我不确定实际描绘的是什么尺寸?

【问题讨论】:

    标签: java performance memory heap-memory jvisualvm


    【解决方案1】:

    三个属性可以定义如下:

    1. 大小:实际总保留堆大小
    2. Used:实际使用的堆大小。
    3. Max: Java 堆的最大大小(年轻代 + 终身代)

    确实,当您启动 JVM 时,初始堆大小(可以使用 -Xms 定义)将是初始的总保留堆大小,然后根据您的应用程序的行为,它可能需要增加总保留大小,直到达到最大大小,如果仍然不够,您可以获得 OOME。

    【讨论】:

    【解决方案2】:

    Size 描述了分配给 java 进程的堆块大小。尝试使用 -Xms 512m 或 1024m,然后您的开始大小将是 512m,但使用的内存可能要低得多。一旦使用的内存增长,堆大小调整就会主动发生,以便可以将内存分配给活动对象。

    就像您拥有最大容量为 30 升的气罐。但是你知道现在你可能只需要 20 升的行程,但实际使用的是 5 升

    【讨论】:

      【解决方案3】:

      堆大小是您正在运行的应用程序的实际堆大小。
      已用堆是堆大小的已用部分。
      最大堆大小 是应用程序堆大小可以拥有的最大值(可以由参数option -Xmx 定义)。 在监控 java 应用程序的内存使用情况时,您会发现 堆大小 在应用程序运行期间可能会发生变化。它不能大于最大堆大小。有关示例分析(应用程序监控),请参见下图:

      【讨论】:

      • 这很令人困惑,而且也很错误。您如何区分 是您正在运行的应用程序具有的堆的实际大小是堆大小的使用部分 - 你没有任何意义。
      猜你喜欢
      • 2014-08-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 2012-09-13
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多