2

我注意到在 Rruntime Manager 中为 API 分配了 0.2vCore,内存利用率为 63%。

当我检查 Anypoint Monitoring 中的堆利用率在 200MB 和 810MB 之间波动时,提到的最大堆大小为 870MB,这引起了一些疑问。

运行时管理器 vCore 和 Anypoint 监视器堆大小是否相同?我分配了 1 GB 的 vCore,但在堆图中,最大堆大小显示在 850-870 MB 之间,具体取决于时间。我的问题是为什么它没有显示最大可用堆大小为 1GB?

堆图没有低于 200MB,它会在任何时候达到 0MB 吗?或者任何类型的编译代码占用这 200MB 空间?

我在这里有点困惑,请任何人在这里澄清..

谢谢..,

4

2 回答 2

2

运行时管理器 vCore 和 Anypoint 监视器堆大小是否相同?如果是,为什么只有 870MB 堆可用而不是分配 1 GB(0.2vCore)?

0.2 vCore 工作器的最大堆大小为 1 GB。可能是 JVM 不需要将实际使用的最大大小增加到可用的最大值。

堆图没有低于 200MB,它会在任何时候达到 0MB 吗?或者任何类型的编译代码占用这 200MB 空间?

任何 Java 应用程序都会有一些对象(如果不是由应用程序由 JVM 运行时本身创建)来执行。这意味着它将具有基线最小堆使用量。我认为任何正在运行的 JVM 都不可能使用 0 MB 的堆。

于 2019-11-28T16:01:47.667 回答
0

你的应用程序被加载到 JVM 中,对象被创建,它会占用一些内存。在这种情况下,200 是您的基线。然后随着更多事件的创建,堆大小增加,并且随着事件到期,垃圾收集开始发挥作用并释放内存。

可以在以下链接中找到更多详细信息。

https://help.mulesoft.com/s/article/Java-JVM-memory-allocation-pattern-explained

于 2019-11-28T05:49:33.280 回答