Каков наилучший способ найти распределение памяти процесса с точки зрения объектов C # - PullRequest
0 голосов
/ 17 июня 2010

Я написал различные консольные приложения на C #, некоторые из которых долго не работали, но со временем могут иметь большой объем памяти.Когда я смотрю на монитор производительности Windows через диспетчер задач, тот же вопрос постоянно возникает у меня в голове;как получить разбивку по количеству объектов по типу, которые вносят свой вклад в этот след;и какие из них f-достижимы, а какие нет и, следовательно, могут быть собраны.Во многих случаях я выполнял проверку кода, чтобы убедиться, что я не буду без необходимости удерживать объекты дольше, чем требуется, и избавляюсь от объектов с помощью конструкции using.Я также недавно смотрел на использование метода CG.Collect, когда я выпустил большое количество объектов (например, содержащихся в коллекции, которая только что была очищена).Однако я не настолько уверен, что это имело такое большое значение, поэтому я выбросил этот код.Я предполагаю, что в пакете sysinternals есть инструменты, которые могут помочь решить эти вопросы типа памяти, но я не уверен, какие и как их использовать.Альтернативой может быть оплата за сторонний инструмент профилирования, такой как JetBrains dotTrace;но мне нужно убедиться, что я сначала изучил бесплатные опции, прежде чем идти к своему менеджеру в шапке.

1 Ответ

0 голосов
/ 17 июня 2010

Существует CLR Profiler, который позволяет просматривать различные графы объектов (я никогда не использовал его):

http://www.microsoft.com/downloads/details.aspx?FamilyID=86ce6052-d7f4-4aeb-9b7a-94635beebdda&displaylang=en

Конечно, ANTS Profiler (бесплатная пробная версия) является часто рекомендуемым профилировщиком. Вам не нужно вручную собирать мусор, GC - это очень разумно построенное решение, которое, вероятно, будет более оптимальным, чем любые ручные вызовы, которые вы делаете. Лучший подход - минимизировать количество объектов, которые вы храните в памяти, и как можно скорее избавиться от объектов с большим объемом памяти, если память является приоритетной.

...