Page 1 of 1

Unidentified unmanaged heaps

Posted: Wed Aug 19, 2009 3:02 am
by Qythyx
I'm trying to figure out why my app is using as much memory as it is and noticed that the "Unidentified unmanaged heaps" has about 20MB of data in it. Is there any way to dig into this section more to help determine what's using that memory?

Posted: Wed Aug 19, 2009 12:44 pm
by Andreas Suurkuusk
By using the unmanaged resources tracker, the profiler should be able to identify the unmanaged heap memory. Have you tried to enable the resource tracker?

However, if you are profiling a 64-bit process, this will unfortunately not work using .NET Memory Profiler 3.1. In version 3.5 the resource tracker will work for 64-bit process as well.

Posted: Thu Aug 20, 2009 1:19 am
by Qythyx
Thanks for the info. I did try the unmanaged resources tracked bofore, but it just showed a block 20MB of Unidentified unmanaged heaps -> Data.

I just trying the 3.5 preview and got a little more info. Now the Unidentified unmanaged heaps -> Data is only 1MB, and a new "Profiler induced data" item is about 20MB. What is this new item? Is it there only because I'm running the memory profiler and therefore won't exist in a real situation?


Posted: Thu Aug 20, 2009 2:46 pm
by Andreas Suurkuusk
"Profiler induced data" referrs to memory that is indirectly allocated by the profiler, i.e. when the runtime makes allocations during a call from the profiler. The profiler will, for instance, load metadata information, which will require the runtime to make allocations. However, if the profiler wouldn't have caused the allocations, there's still a possibility that this memory would have been allocated anyway. So "profiler induced" memory is memory used by the profiler, but whether it will be used when not profiling can unfortunately not be determined (even though I think you can usually assume that this memory will not be used when not profiling).