Обнаружение прикрепленных обработчиков событий для сборки мусора - PullRequest
3 голосов
/ 25 августа 2011

Я наследую существующее приложение, в котором есть несколько дыр в памяти. Я подозреваю, что они вызваны обработчиками событий, которые подписаны, но никогда не выпускаются. Какие инструменты или ресурсы я могу использовать, чтобы помочь идентифицировать объекты, к которым удерживаются даже после того, как они вышли из области видимости из-за открытого обработчика событий?

Ответы [ 2 ]

2 голосов
/ 25 августа 2011

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

0 голосов
/ 25 августа 2011

JetBrains также имеет профилировщик памяти: dotTrace Memory . Я получил это, но не использовал это достаточно, чтобы дать рекомендацию. Это также не бесплатно (если вы не выиграли лицензию в группе пользователей). :)

Я бы также проверил, чтобы все объекты, классы которых реализуют IDisposable, были правильно расположены. Блок using обеспечит это, даже если произойдет исключение. Хотя это связано с неуправляемыми ресурсами, а не с памятью, на практике может быть небольшая разница.

См. Также Обнаружение «утечек» IDisposable объектов , в которых упоминается несколько профилировщиков памяти.

...