[Mono-dev] Issues with GC due to libgc

David Suarez listasdavid at codicesoftware.com
Wed Sep 30 04:24:10 EDT 2009


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20090930/79ba3223/attachment.html 


More information about the Mono-devel-list mailing list