我可以注意到,0.2vCore被分配给Rruntime Manager中的API,内存利用率为63%。
当我在Anypoint Monitoring中检查堆利用率在200MB和810MB之间波动时,提到的最大堆大小为870MB,这引发了一些疑问。
运行时管理器vCore和Anypoint监视器堆大小是否相同?我分配了1 GB的vCore,但在堆图中,最大堆大小显示在850-870MB之间,这取决于时间。我的问题是,为什么它没有显示最大可用堆大小为1 1GB?
堆图不会低于200MB,它会在任何时候达到0MB吗?或者任何类型的编译代码占用这200MB的空间?
我有点糊涂了,有人能澄清一下吗?
谢谢..
发布于 2019-11-29 00:01:48
运行时管理器vCore和Anypoint监视器堆大小是否相同?如果是,为什么只有870MB的堆可用,而不是分配的1 GB(0.2vCore)?
0.2 vCore worker的最大堆大小为1 GB。JVM可能不需要将实际使用的最大大小增加到最大可用大小。
堆图不会低于200MB,它会在任何时候达到0MB吗?或者任何类型的编译代码占用这200MB的空间?
任何Java应用程序都会创建一些要执行的对象,如果不是由JVM运行时本身创建的话。这意味着它将有一个基准最小堆使用量。我认为任何正在运行的JVM都不可能有0MB的堆使用率。
发布于 2019-11-28 13:49:33
您的应用程序被加载到JVM中,对象被创建,它将占用一些内存。在这种情况下,200是你的底线。然后,随着创建更多的事件,堆大小增加,并且随着事件到期,垃圾收集开始发挥作用,并释放内存。
更多细节可以在下面的链接中找到。
https://help.mulesoft.com/s/article/Java-JVM-memory-allocation-pattern-explained
https://stackoverflow.com/questions/59081409
复制相似问题