Existe uma maneira que eu possa saber quem mantém uma referência a um objeto?

votos
2

Existe uma maneira que eu possa saber quem mantém uma referência a um objeto?

Vejo que meu objetivo não é finalizado pela d'tor depois de eu chamar GC.Collect.

Publicado 19/05/2009 em 14:48
fonte usuário
Em outras línguas...                            


3 respostas

votos
4

Não há nenhuma maneira de fazer isso de forma eficaz no código. A melhor maneira de rastrear vazamentos desse tipo é usar uma ferramenta como o WinDbg. A extensão SOS tem vários comandos que são projetados especificamente para ajudar a rastrear vazamentos de memória.

Rico fez uma entrada de blog aprofundada sobre o assunto:

Respondeu 19/05/2009 em 14:52
fonte usuário

votos
2

Além Windbg, você poderia usar um profiler .NET. Eu fiz as duas coisas - o perfil não irá dizer-lhe qualquer coisa que Windbg não pode, mas um bom profiler é um pouco mais amigável.

WINDBG Além do link de JaredPar, Tess Ferrandez tem algumas grandes artigos sobre o uso Windbg com .net. Aqui está aa artigo vazamento de memória: http://blogs.msdn.com/tess/archive/2006/01/23/516139.aspx

Profiler: Eu tive muita sorte com o profiler do SciTech (não estou filiado em qualquer maneira, grande ferramenta, embora): http://memprofiler.com/

Eles têm alguns grandes como fazer vídeos em seu site também.

Respondeu 19/05/2009 em 15:01
fonte usuário

votos
2

Você deve chamar GC.WaitForPendingFinalizersdepois GC.Collectde permitir que o coletor de lixo para limpar a fila freachable. Desde que a GC é executado em um segmento diferente, é possível que a sua aplicação se mudou enquanto o GC está tentando finalizar quaisquer objetos que exigem finalização. Chamando GC.WaitForPendingFinalizersvocê está forçando seu segmento atual aguardar até que o GC terminou de limpar a fila freachable (a fila de itens que exigem finalização) antes de retomar a execução.

Dito isto no entanto, concordo com o comentário de Joel Coehoorn - o GC funciona melhor quando você deixá-lo sozinho.

Respondeu 19/05/2009 em 14:57
fonte usuário

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