0

我正在编写一些监视代码,以跟踪我的应用程序中使用的内存。我找到了 MemoryMXBean,它可以让我调查内存使用情况。但是我无法真正掌握文档中的最大值:

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

什么情况下最大值可以为空?我认为它总是会被设置,即使我没有在启动时明确设置它。如果我设置它,最大值如何随时间变化?有一些相关的线程,但没有解决问题。

有人能把光明带入黑暗吗?

4

1 回答 1

1

我不确定最大内存使用量何时可以为空,但我可以知道它是如何随时间变化的。最大值表示程序在其生命周期内使用过的最大内存,由XmxJVM 参数限制。

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

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

于 2012-10-01T09:52:02.390 回答