Утилита: P
много вопросов, которые задают вопрос, как обнаружить утечку идентифицируемых объектов. Похоже, ответ"ты не можешь".
Я только что проверил самый простой тестовый пример, что FxCop 10.0 этого не делает, ReSharper 4 с MSVS2010 этого не делает.
Это кажется мне неправильным, хуже, чем утечки памяти в C (для чего мы по крайней мере создали инструменты для обнаружения).
Я думал: возможно ли, используя рефлексию и другие непонятные передовые методы, что я могу внедрить проверку во время выполнения в финализаторе, чтобы увидеть,Dispose
был вызван?
Как насчет фокусов с WinDBG + SOS?
Даже если не существует инструментов для этого, я хотел бы знать, возможно ли это теоретически (мой C # не очень острый).
Идеи?
НОТА Название этого вопроса могло вводить в заблуждение. Настоящий вопрос здесь должен бытьбудьIDisposable
объект былDisposed()
должным образом, Распоряжение GC не считается, так как я считаю это ошибкой.
редактировать: Решение: .NET Memory Profiler делает свою работу. Нам просто нужно спамить несколькоGC.Collect()
в конце программы, чтобы наш профилировщик мог правильно подобрать статистику.