Как я могу определить, сколько памяти использует моя программа .NET?

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

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

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

  • Общее количество используемой памяти (в оперативной памяти или в подкачке или как угодно)
  • Общее количество используемой оперативной памяти (работает в ситуации, когда на компьютере много свободного физического ОЗУ, поэтому принудительное извлечение данных, как мы надеемся, не является проблемой)
  • Общая память, фактически используемая программой (не считая дополнительных затрат, которые хранит GC)
  • Общее использование памяти, которое используется только моей программой (не считая разделяемые библиотеки / разделяемую память)
  • Общее использование общей памяти.
10.12.2008 21:30:18
7 ОТВЕТОВ
РЕШЕНИЕ

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

8
10.12.2008 21:46:45
Эта информация поступает из счетчиков производительности. Вы также можете просмотреть счетчики производительности с perfmon.
Lars Truijens 10.12.2008 21:51:35
Правда - но я считаю , Process Explorer , чтобы быть более удобным инструментом, даже если она является дополнительной установки:}
moobaa 10.12.2008 22:34:02

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

http://www.red-gate.com/Products/ants_profiler/index.htm

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

1
10.12.2008 21:35:55

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

3
10.12.2008 21:44:04

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

1
10.12.2008 21:47:35

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

0
10.12.2008 21:48:17

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

0
10.12.2008 21:49:10

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

0
10.12.2008 21:52:22