我们正在监视tomcat服务器,我发现只要Committed Heap内存达到最大堆内存我的tomcat崩溃或OOM错误,但同时Heap Used内存正常使用。有人可以解释一下使用的内容以及为什么在Heap使用时崩溃是正常的。
请参阅下图,以便您了解一下。
答案 0 :(得分:9)
承诺空间是非虚拟空间。即静态分配给JVM的给定分区的空间。当您使用可选的大小调整开关-Xms和-Xmx时,并非所有内容最初都会提交给特定的内存分区。随着世代需要扩展,他们被允许成长为“虚拟”空间。
您的图表看起来应该如何运作。随着您使用的空间越来越接近您的承诺,承诺的空间将扩展到最大值。当提交达到它的最大大小时,它无处可去。如果它无法用最后一个沟槽GC保存自己,那么你的JVM就会消失。