Как определить, сколько памяти использует моя программа .NET? - PullRequest
7 голосов
/ 11 декабря 2008

Часто говорят, что диспетчер задач не дает точного указания того, сколько памяти используется процессом.

Если это действительно так, как проще всего это выяснить?

Я хотел бы знать:

  • Общее количество используемой памяти (будь то в ОЗУ или в подкачке или что-то еще)
  • Общее количество используемой оперативной памяти (работает в ситуации, когда на компьютере много свободного физического ОЗУ, поэтому, как мы надеемся, принудительное извлечение данных не будет проблемой)
  • Общая память, фактически используемая программой (не считая дополнительных затрат, которые хранит GC)
  • Общее использование памяти, которое используется исключительно моей программой (не считая разделяемые библиотеки / разделяемую память)
  • Общее использование общей памяти.

Ответы [ 7 ]

8 голосов
/ 11 декабря 2008

Grab Process Explorer , щелкните правой кнопкой мыши -> Свойства процесса в списке и перейдите на вкладку ".NET". Выберите «.NET CLR Memory» из выпадающего списка, и у вас будет больше оперативной информации о вашем процессе, чем вы будете знать, что делать;)

3 голосов
/ 11 декабря 2008

http://memprofiler.com/ - очень хороший профилировщик памяти .Net. Но встроенная Microsoft в Windows Performance Monitor (perfmon) также даст вам эти цифры. См. http://dotnetdebug.net/2005/06/30/perfmon-your-debugging-buddy/.

1 голос
/ 11 декабря 2008

Запустите Performance Monitor (perfmon.exe) и взгляните на объект производительности .Net CLR Memory. Каждая запущенная программа .net имеет свой экземпляр. Там вы сможете найти то, что хотите.

1 голос
/ 11 декабря 2008

Есть некоторые вещи, которые вы можете сделать, но я считаю, что лучше всего, если вы серьезно относитесь к профилированию своего приложения, это использовать Ants Profiler от Red Gate:

http://www.red -gate.com / Продукты / ants_profiler / index.htm

Это программное обеспечение действительно всеобъемлющее и дает хорошее представление о том, какие виды использования памяти и другие виды метрик представлены в вашем приложении.

0 голосов
/ 11 декабря 2008

Я тоже использую memprofiler, и он нам очень помог.

0 голосов
/ 11 декабря 2008

В SysInternals есть несколько полезных функций, включая ProcessExplorer, включая профилировщик .NET, хотя ANTS - это то, что вам нужно, если вам нужен профессиональный инструмент.

0 голосов
/ 11 декабря 2008

Process Explorer покажет вам это, если дважды щелкнуть по процессу.

...