Есть ли способ, что я могу знать, кто хранит ссылку на объект?

голоса
2

Есть ли способ, что я могу знать, кто хранит ссылку на объект?

Я вижу, что мой объект не доработан d'тор после того как я называю GC.Collect.

Задан 19/05/2009 в 14:48
источник пользователем
На других языках...                            


3 ответов

голоса
4

Там нет никакого способа сделать это эффективно в коде. Лучший способ отслеживать утечки такого рода является использование такого инструмента, как WinDbg. Расширение SOS имеет несколько команд, которые специально разработаны, чтобы помочь отследить утечку памяти.

Рико сделал запись тщательного блога на эту тему:

Ответил 19/05/2009 в 14:52
источник пользователем

голоса
2

Вы должны позвонить GC.WaitForPendingFinalizersпосле того, как GC.Collectразрешить сборщик мусора , чтобы очистить freachable очередь. Поскольку GC работает в другом потоке, возможно , что ваше приложение переместилось на то время GC пытается завершить какие - либо предметы , которые требуют доработок. Позвонив GC.WaitForPendingFinalizersвы заставляете текущий поток ждать , пока ГХ не закончит очистки freachable очереди (очереди элементов , которые требуют доработки) , прежде чем возобновить выполнение.

Это, как говорится, однако, я согласен с комментарием Joel Coehoorn в - ГХ работает лучше всего, когда вы оставить его в покое.

Ответил 19/05/2009 в 14:57
источник пользователем

голоса
2

В дополнение к Windbg, вы могли бы использовать .net профилировщика. Я сделал это оба пути - профиль не скажет ничего, что Windbg не может, но хороший профайлер немного более дружественными.

Windbg В дополнение к ссылке с JaredPar, Тесс Ferrandez имеет некоторые большие статьи об использовании Windbg с .net. Вот аа статья утечки памяти: http://blogs.msdn.com/tess/archive/2006/01/23/516139.aspx

Profiler: У меня было большой удачи с профилировщика SCITECH в (я не связан каким - либо образом, отличный инструмент, хотя): http://memprofiler.com/

У них есть некоторые большие, как сделать видео на их сайте, а также.

Ответил 19/05/2009 в 15:01
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more