Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding .NET Application Memory Size

An application I'm working on takes 338MB private bytes and 780MB virtual bytes right after startup. I'm trying to understand what takes all this memory. Hopefully after understanding that I'll be able to reduce it's size. This is a 32bit C# application, numbers above were taken while it is running in Windows7 64bit.

Opening a dump with windbg shows that the heap size is 47MB. The total external library files size that the application is loading is 60MB.

An empty c# application takes only 10MB so what can cause my application to reach 338MB private bytes? And why windows7 allocates 780MB virtual memory?

Any directions will help.

like image 742
galbarm Avatar asked Jul 04 '11 08:07

galbarm


1 Answers

You can utilize VMMap, a process virtual and physical memory analysis utility from Windows Sysinternals on the technet site.

VMMapshows a breakdown of a process's committed virtual memory types as well as the amount of physical memory (working set) assigned by the operating system to those types. Besides graphical representations of memory usage, VMMap also shows summary information and a detailed process memory map. Powerful filtering and refresh capabilities allow you to identify the sources of process memory usage and the memory cost of application features.

Besides flexible views for analyzing live processes, VMMap supports the export of data in multiple forms, including a native format that preserves all the information so that you can load back in. It also includes command-line options that enable scripting scenarios.

VMMap is the ideal tool for developers wanting to understand and optimize their application's memory resource usage.

like image 54
gimel Avatar answered Sep 28 '22 20:09

gimel