I would like to understand an inconsitency between perfmon results and MemProfiler's ones:
When I launch our application and reach a well identified state,
perfmon counters show
473 Mo of private bytes (in "Process" performance object)
79 Mo of "Bytes in all heaps" (in .NET CLR Memory performance object)
When the same application is run under MemProfiler 220.127.116.11 and reach the same identified state, MemoProfiler shows in types/resources view,
column "live instance sizes":
129 Mo of unmanaged resources
41 Mo Of .NET live instance sizes
I expected these numbers to fit with perfmon's ones, but they obviously do not. More precisely, I expected to have 129 + 41 = 170 Mo of private bytes, but I get 303 Mo more !
The .NET performance counters reflect the numbers of bytes allocated for all GC heaps, it doesn't consider whether there's an actual managed instance using the memory. In the Type/Resources view, you will only see the memory used by "Live instances" (i.e. instances that are reachable from a root). Thus the memory usage presented will be lower than the perfomance counter value. Again, the native memory view should present numbers that are closer to the performance counter numbers.
To get more detailed information in the Native memory view, I recommend that you download the latest release of .NET Memory Profiler from http://memprofiler.com/download.aspx.
SciTech Software AB
Users browsing this forum: Bing [Bot] and 1 guest