MemoryUsage max随时间变化

时间:2012-10-01 09:43:26

标签: java memory

我正在编写一些监控代码,以便跟踪应用程序中的已用内存。我找到了MemoryMXBean,它允许我调查内存使用情况。但我无法从documentation

获得最大值
  

max :表示可用于内存管理的最大内存量(以字节为单位)。它的价值可能是不确定的。如果已定义,最大内存量可能会随时间而变化。

在哪种情况下,最大值可以为空?我以为它会一直设置,即使我没有在启动时设置它。如果设置它,最大值如何随时间变化?有一些相关的thread,但没有答案。

有人可以将光带入黑暗中吗?

1 个答案:

答案 0 :(得分:1)

我不确定最大内存使用量何时可以为null但我可以告诉它是如何随时间变化的。最大值表示程序在其生命周期中使用的最大内存,由Xmx JVM参数限制。

所以当你的程序启动时(Xmx说1g),最大可能是256m。由于程序运行并需要更多内存,JVM将为其提供更多内存,最大值将增加,比如512米。现在程序完成处理并且所需的内存下降,GC启动并回收内存。但最大值保持在512米。

最大值永远不会超过Xmx参数指定的值。如果达到限制(在这种情况下为1g),它们将保持该值直到程序运行结束。