On 11/19/10 Esben Laursen wrote:
>          Heap shot 10 at 331.831 secs: size: 23752824, object count: 
> 22964, class count: 519, roots: 8074
>               Bytes      Count  Average Class name
>            17182136       1117    15382 System.Byte[] (bytes: +16703432, 
> count: +509)
>                  555 root references (2 pinning)
>                  18 references from: SBSSHClient.TElSSHClient
>                  14 references from: 
> SBCryptoProvBuiltInSym.TElBuiltInAESSymmetricCrypto
>                  13 references from: SBSSHKeyStorage.TElSSHKey
> 
> Sorry that you have to spell it out in wet cardboard, but what is a root 
> reference and what does pinning mean?

Typically, a root reference is a static field in a class, or a gc
handle (see the GCHandle docs on msdn). Pinning means that two
of those arrays were referenced either from a pinning gc handle
or from some pinning variable on one of the thread's stacks
(because of something like the fixed C# statement or by the
conservative GC scan of some other stack local variable).
Pinning means also that the object can't be moved in memory.

Given the high number of root references to the arrays, my guess
is that the app creates GC handles for them and doesn't free them.
In the GC summary you should see something like the following if my
guess is true:

        GC handles normal: created: 600, destroyed: 0, max: 600

lupus

-- 
-----------------------------------------------------------------
lu...@debian.org                                     debian/rules
lu...@ximian.com                             Monkeys do it better
_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to