以下圖表顯示我正在使用內存並且沒有被垃圾收集?這是Java中內存泄漏的指示嗎?
我期待橙色柱狀圖(分配的堆),以一旦我開始使用較少的堆下去。
- 這是無效的假設嗎?
- 一旦分配,堆不是 收縮,直到程序關閉?
以下圖表顯示我正在使用內存並且沒有被垃圾收集?這是Java中內存泄漏的指示嗎?
我期待橙色柱狀圖(分配的堆),以一旦我開始使用較少的堆下去。
從圖中可以清楚地看出,您的JVM能夠縮小堆。這可以從下午3點10分之前的橙線看到略有下降。
但是,稍後JVM選擇不縮小堆。這幾乎肯定是因爲沒有使用堆中不足的大部分。行爲由-XX:MinHeapFreeRatio
和-XX:MaxHeapFreeRatio
控制。
相關討論,請參見http://stopcoding.wordpress.com/2010/04/12/more-on-the-incredible-shrinking-jvm-heap/
太棒了,謝謝。 :) – sdasdadas
+1看看每次完整的GC後使用多少。如果需要,您可以觸發額外的GC,但缺少完整的GC表明您沒有問題(或泄漏非常緩慢) –
在大多數的JVM,一旦堆分配不縮水,直到程序結束。 –