Hi Zoltan,
Let me point some data from our tests to the discussion.
I think it's not so normal, if you allocate 2.5GB of arrays, after 10
gcs you'd have 2.5GB virtual, but RSS should go down to a few mb (10,
20) if gc works fine. This is because GC removes all permissions from
all the "big" blocks allocated for arrays, and the OS will normally take
those pages out of RSS as a consequence.
Those blocks up to 100Mb are actually "leaked" I'm afraid. If you do
again the same operation in the sample (allocate 2.5GB), your virt
memory will again go up to 2.5GB + the "free" blocks, so they seem to be
not so free. This is visible with pmap (pages that should be "freed" by
clearing perms are actually holding them and kept in rss)
In 64 bits, where no pointer collision occurs (at least in the sample),
behavior is the expected: RSS goes down to a few mb after gcs.
Cheers,
David
Zoltan Varga wrote:
Hi,
On my machine, after the allocation of the 2.5GB of arrays + 10 gcs,
the RSS of the
process goes back to about 100MB. This is perfectly normal, as the GC
doesn't return
free memory to the OS in some cases, so it doesn't have to allocate it
again when the
program starts allocating memory.
Zoltan
_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list