Сведения о потреблении памяти приложением .NET - PullRequest
1 голос
/ 17 февраля 2009

Я отлаживаю некоторые проблемы с памятью, связанные с управляемым приложением, которое у нас есть. Я наблюдал за приложением с помощью perfmon, когда запутался в разнице памяти между байтами .NET во всех кучах и рабочим набором, сообщаемым в Process Explorer (столбец Mem Usage в случае диспетчера задач). Счетчик байтов во всех кучах отображает значение в 15 МБ, тогда как рабочий набор процесса составляет 78 МБ - огромная разница. Я понимаю, что некоторое количество памяти будет использовано в файлах, загруженных в память, но цифры все равно не складываются.

Есть какие-нибудь подсказки?

Ответы [ 3 ]

1 голос
/ 17 февраля 2009

Попробуйте и получите в свои руки FXCop. Ознакомьтесь с правилом, касающимся сбоя вызова dispose для типов IDisposable.

Существуют две основные причины утечек памяти в .net, а именно неспособность вызвать IDisposable (это метод, который будет вызывать неуправляемые деструкторы для кода P / Invoke), а вторая не может освободить ссылки на объекты, что их не мусор собирать. Например, если вы храните объекты в списке, вы можете случайно сохранить ссылку на список и, следовательно, на объект, который все еще находится в памяти.

1 голос
/ 17 февраля 2009

Сообщение в блоге Rid Mariani's Performance Tidbits Отслеживание управляемых утечек памяти (как найти утечку GC) не дает прямого ответа на ваш вопрос о: байтах во всех кучах и рабочем наборе, но это должно значительно помочь с вашей задачей re: отладка некоторых проблем с памятью, связанных с управляемым приложением.

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

Все статьи довольно старые, но представленная информация все равно будет полезна для вас.

1 голос
/ 17 февраля 2009

Эта статья дает хороший обзор различных счетчиков памяти.

Рабочий набор - Это набор страниц виртуальной памяти (которые совершено) для процесса и находится в физической памяти. Рабочая набор как "в настоящее время / недавно работаю над этими страницами "список

Из описания вашего вопроса кажется, что у вас прибл. Используется 63 МБ неуправляемой памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...