Several questions about Memory Profiler
RinkeB
Posts: 8
Hello there,
After reading the articles on the .NET tools resource center page, I still have a few questions about the Memory Profiler application.
For your information, I installed the application on a virtual server (Win 2008 with IIS) and I am profiling the memory usage of asp.net MVC applications.
I was wondering why there are thousands of string objects and hundreds of Byte[] and Int32[]? Most of them are not my code. Where do they come from?
And what does the 'Number of large fragments' section under the title 'Memory fragmentation' mean? Because it shows 2 (100% of free memory). What exactly is this?
Greetings,
After reading the articles on the .NET tools resource center page, I still have a few questions about the Memory Profiler application.
For your information, I installed the application on a virtual server (Win 2008 with IIS) and I am profiling the memory usage of asp.net MVC applications.
I was wondering why there are thousands of string objects and hundreds of Byte[] and Int32[]? Most of them are not my code. Where do they come from?
And what does the 'Number of large fragments' section under the title 'Memory fragmentation' mean? Because it shows 2 (100% of free memory). What exactly is this?
Greetings,
Comments
Unfortunately in order to understand the problem this will require a deep understanding of web applications, rather than profiler. However, I can tell you that, since web applications almost exclusively return data that is of type "string", for instance, HTML pages, invariably the type with the most instances will be string. This doesn't mean something is wrong. It means the .NET runtime is producing these.
If you can please back up and let us know what kind of problem you think you may have with this website, we can give better advice about what you may need to look at to find the problem.
Lots of websites are problematic by nature because they store state too long or start to thrash when they reach their limit of simultaneous sessions.
Even the most simple websites are already using 32mb, and a simple statistics application for running processes constantly uses 50-60mb.
I am talking about private bytes here.
In the summary section the program shows '.NET is using 6,195mb of 27,35mb total private bytes allocated to the application'.
In my understanding these numbers are explained as following:
6,195mb = gen1 + gen2 + large object + unused mem.
27,35mb = the above + unmanaged.
And the total size of objects in snapshot X = gen1 + gen2 + large object.
Are my assumptions true?
I am wondering how private bytes can be that high.
Where does the increase come from in comparison to the numbers i've just given.
And I think i've posted this topic in the wrong section. Shouldn't it be in the normal Memory Profiler section? I am using 7.0.
I think Andrew had delivered a pretty thorough explanation you may be interested in.
I'm still wondering what's the difference between the the private bytes in the line graph (~50mb) and the private bytes on the top of the summary page (26,38mb).
picture
What does explain this difference?
I'm still quite confused about this. Sometimes the line graph value is twice as big as the summary value.
I hope you can give me some info on this, because i encounter this at all my MVC applications.