Как определить использование памяти в моем приложении .NET - PullRequest
8 голосов
/ 25 января 2011

У меня есть сайт, где какой-то пользователь может загрузить свою dll.Мне нужно создать экземпляр из этой библиотеки DLL и вызвать конкретный метод.Более того, мне нужно сделать это с несколькими DLL в одном процессе, поэтому я не могу использовать System.Diagnostics.Process.

Есть ли способ определить, сколько памяти использует этот вызов методаили ограничить его во время выполнения моего приложения?Заранее спасибо за любую помощь

Ответы [ 4 ]

8 голосов
/ 25 января 2011

Использование памяти в .Net очень сложно измерить - это будет зависеть от множества факторов, таких как запуск сборки мусора, объем загруженной инфраструктуры и т. Д.

Вы можете посмотреть на использование памяти на уровне процесса, используя счетчики производительности

Если на мгновение вы уже рассмотрели последствия для безопасности запуска кода пользователя в полудоверенной среде, вам нужно использовать AppDomain для загрузки DLL - таким образом, она может быть выгружена без перезапуска всего сайта / рабочего пула

5 голосов
/ 25 января 2011

Если вы используете .NET 4.0, взгляните на MemoryFailPoint .

Еще одно предложение: .NET 4.0 теперь предоставляет средства для контроля потребления памяти доменом приложения ( Свойство AppDomain.MonitoringIsEnabled ). Например, вы можете использовать основной домен приложений для опроса и демонтажа домена приложений, если он использует слишком много памяти.

3 голосов
/ 25 января 2011

Не могли бы вы использовать GC.GetTotalMemory в качестве альтернативы для отслеживания использования памяти?

http://msdn.microsoft.com/en-us/library/system.gc.gettotalmemory.aspx

0 голосов
/ 25 января 2011

Серьезно, вы не можете пройти мимо Red Gates Ants Memory Profiler - бесплатная 14-дневная пробная версия ...

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