2013-02-04 23 views
7

以下圖表顯示我正在使用內存並且沒有被垃圾收集?這是Java中內存泄漏的指示嗎?

enter image description here

我期待橙色柱狀圖(分配的堆),以一旦我開始使用較少的堆下去。

  • 這是無效的假設嗎?
  • 一旦分配,堆不是 收縮,直到程序關閉?
+2

在大多數的JVM,一旦堆分配不縮水,直到程序結束。 –

回答

10

從圖中可以清楚地看出,您的JVM能夠縮小堆。這可以從下午3點10分之前的橙線看到略有下降。

但是,稍後JVM選擇不縮小堆。這幾乎肯定是因爲沒有使用堆中不足的大部分。行爲由-XX:MinHeapFreeRatio-XX:MaxHeapFreeRatio控制。

相關討論,請參見http://stopcoding.wordpress.com/2010/04/12/more-on-the-incredible-shrinking-jvm-heap/

+0

太棒了,謝謝。 :) – sdasdadas

+0

+1看看每次完整的GC後使用多少。如果需要,您可以觸發額外的GC,但缺少完整的GC表明您沒有問題(或泄漏非常緩慢) –