Понимание использования памяти - PullRequest
4 голосов
/ 28 июня 2010

У меня есть служба Windows, которая работает 24x7, и использование памяти постоянно увеличивается, и примерно раз в неделю мы должны перезапускать ее.

Я ищу информацию о понимании использования памяти в .NET, чтобы я мог получить четкое представление о том, почему наш сервис делает это.

Я также хотел бы лучше понять это в .NET в будущем.

У кого-нибудь есть хорошие ссылки?

1009 * БЛАГОДАРЯ *

Ответы [ 4 ]

4 голосов
/ 28 июня 2010

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

Незарегистрированные обработчики событий вызывают утечку памяти

2 голосов
/ 28 июня 2010

Ну, это как-то просто: GC запускается время от времени и удаляет мертвые объекты. Объект считается мертвым, когда на него нет живых ссылок. Ссылки на жизнь определяются путем запуска с корней (например, статических переменных, регистров ЦП и т. Д.) И обхода всех объектов. Все объекты, не достигнутые этим, мертвы.

Таким образом, для решения вашей проблемы вы должны использовать профилировщик памяти и проверить, какие объекты находятся в памяти, например, вызванные статическим словарем, который «кэширует» значения и тому подобное.

1 голос
/ 28 июня 2010

То, что вы видите, называется утечка памяти . В Интернете доступно множество ресурсов. Я не уверен, что это правильный вопрос, если вы не хотите предоставить нам код для выявления утечек.

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

http://www.eqatec.com/tools/profiler/ <= бесплатно </p>

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