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

Reply via email to