Trying to debug a memory leak in a java program (running on linux 64bits), using VisualVM 1.3.
I noticed that after each click on the “Perform GC” button in the VisualVM Monitor tab, the “used” value for the Old Gen memory pool goes up… which seems rather counter-intuitive…
That would make sense if “Perform GC” did trigger a GC for the young gen only (since some objects could then be migrated from young to old gen)… But not in the case of a full GC.
Has anyone has encountered this before ? Thanks.
Eg.
1) OldGen Initial state:
PeakUsage
committed:1431 Mb
init:1431 Mb
max:1431 Mb
used:98Mb
Usage
committed:1431 Mb
init:1431 Mb
max:1431 Mb
used:98Mb
2) Perform GC
3) New state:
PeakUsage
committed:1431 Mb
init:1431 Mb
max:1431 Mb
used:105Mb
Usage
committed:1431 Mb
init:1431 Mb
max:1431 Mb
used:105Mb
It seems quite possible that full GC could also cause migration of young gen objects to the old gen. Do you have some specific reason to think otherwise?