2012-04-27 22 views
2

我們正在監視tomcat服務器,並且我發現每當Committed Heap內存達到最大堆內存時,我的Tomcat崩潰或OOM錯誤,但同時堆已用內存正常使用。有人可以解釋使用的是什麼,以及爲什麼在堆使用時崩潰是正常的。什麼是tomcat內存堆提交?

看到下面的圖,所以你有一些想法。

enter image description here

回答

9

提交的空間是空間不是虛擬的。即靜態分配給JVM給定分區的空間。當您使用可選尺寸開關-Xms和-Xmx時,並非所有內容最初都會提交給特定的內存分區。隨着世代需要擴大,他們被允許進入「虛擬」空間。

您的圖表看起來應該如何工作。隨着您使用的空間向您承諾的方向發展,承諾的空間將向最大限度擴展。當承諾達到最大規模時,它沒有去哪裏。如果它不能用最後一個GC保存自己,那麼你的JVM就可以運行了。

+0

「如果它可以用最後一道GC保存自己,那麼你的JVM就會運行。」這應該是*可以*還是*不能*?如果它是*可以*我不明白... – xref 2016-04-14 22:38:12