2011-01-05 3 views
1

Versuchen, ein Speicherleck in einem Java-Programm (unter Linux 64 Bit) mit VisualVM 1.3 zu debuggen.OldGen Nutzung geht nach Full GC

Ich bemerkte, dass nach jedem Klick auf der „GC Perform“ in dem VisualVM Registerkarte Monitor, die „verbrauchte“ Wert für den alten Gen Speicherpool nach oben geht ... was eher kontraintuitiv scheint ...

Das würde Sinn machen, wenn "Perform GC" nur einen GC für das junge Gen auslösen würde (da einige Objekte dann von jungem auf altes Gen migriert werden könnten) ... Aber nicht im Falle eines vollständigen GC.

Hat jemand schon einmal das erlebt? Vielen Dank.

Eg. 1) OldGen Ausgangszustand:

PeakUsage begangen: 1431 Mb init: 1431 Mb max: 1431 Mb verwendet: 98Mb

Usage begangen: 1431 Mb init: 1431 Mb max: 1431 Mb verwendet: 98Mb

2) Führen GC

3) Neuer Zustand:

PeakUsage begangen: 1431 Mb init: 1431 Mb max: 1431 Mb verwendet: 105MB

Usage begangen: 1431 Mb init: 1431 Mb max: 1431 Mb verwendet: 105MB

Antwort

2

Es scheint durchaus möglich, dass die vollständige GC auch die Migration junger Genobjekte in das alte Gen verursachen könnte. Hast du einen bestimmten Grund, anders zu denken?

+0

Klarer ausgedrückt: Full GC löscht natürlich in OldGen nichts, wenn kein Müll drin ist. – delnan