[Mono-dev] Issues with GC due to libgc
listasdavid at codicesoftware.com
Wed Sep 30 04:24:10 EDT 2009
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.
Zoltan Varga wrote:
> 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.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Mono-devel-list