Se o PC real estiver passando por um vazamento de memória RAM do Silverlight de linha de base baixa, este guia deve ajudá-lo a consertá-lo.
Aprovado: Fortect
- Baixe o software de origem 3) 1,18 KB
Atualmente não há Space Profiler para Silverlight
Se você programou todos eles no Silverlight, provavelmente está se perguntando se esses objetos de memória estão sendo coletados pelo GC (coletor de lixo). E se os obstáculos mantivessem você em mente durante toda a vida do seu aplicativo – você sabia?
Os criadores de perfis de armazenamento .NET clássico não funcionam bem com solicitações do Silverlight. Portanto, se tivermos um pouco de memória e depois quisermos investigar o problema, a única maneira de resolver o problema é converter essa solução útil de processo em um aplicativo WPF, o que, para meu cenário, era difícil na melhor das hipóteses, era quase impossível.
Quando você realmente deve usar um detector de vazamento?
Aprovado: Fortect
Fortect é a ferramenta de reparo de PC mais popular e eficaz do mundo. Milhões de pessoas confiam nele para manter seus sistemas funcionando de forma rápida, suave e livre de erros. Com sua interface de usuário simples e mecanismo de verificação poderoso, o Fortect localiza e corrige rapidamente uma ampla gama de problemas do Windows, desde instabilidade do sistema e problemas de segurança até gerenciamento de memória e gargalos de desempenho.
A capacidade interna de lembrar o detector de vazamento que escrevi deve ser usada principalmente quando você suspeita que um dos objetos que você escreve normalmente não está sendo coletado, embora o coletor de lixo deva coletá-lo. Você usaria um detector de vazamento de memória para rastrear confortavelmente esse comportamento específico.
Como faço para usar o detector de memória do aplicativo Silverlight?
Para usar meu sinalizador de vazamento de memória, primeiro adicione cada objeto que deseja rastrear chamando geralmente o caminho AddReference
do detector em todos os construtores do objeto. Então, quando o objeto já deveria ter sido coletado como lixo, eu chamo o método Check
para ter certeza de que ele foi gerado e não está mais visível na memória.
Como faço para que o coletor de lixo recupere objetos mesmo se o detector de vazamento de memória os estiver acessando?
O segredo desse indicador de vazamento de memória está em como o caractere WeakReference
funciona. WeakReference
é definitivamente um recurso que fornece a capacidade de fazer referência a um armazenamento de objeto sobrevivente para evitar que o objeto receba a cortesia coletada do coletor de lixo. Mais dados sobre a região da classe WeakReference
podem ser encontrados aqui.
O Código Um – Apresentação
O detector de fluxo de memória mantém uma lista base chamada elementsList
, que consiste em pontos finos de ObjectStruct
. Cada elemento contém um WeakReference
destinado ao qual o objeto e o objeto rastreados contêm aspectos de depuração. Você pode usar StackTrace ()
quase em qualquer lugar para identificar o ilustrador da mercadoria rastreada. Este campo pode ajudá-lo a encontrar o comerciante do dispositivo de armazenamento que vazou.
O código é dividido em três métodos estáticos fundamentais. Os dois primeiros devem ser contatados, o último, SignalDisposed
, é por causa da solução de problemas. Métodos:
-
Adicionar link
mais essencial – Adiciona o objeto que você deseja que seja monitorado ao detector do warehouse. Você pode decidir se deseja expandir “StackTrace” ao criar um objetivo. O objeto construtor é um bom lugar para chamar esse método.
Seria interessante saber qual objeto é realmente esperado com objetos rastreados na memória. Verificar
– Use este método para verificar a memória em pé. Um bom lugar para ser forçado A verificação desta chamada pode ser um aviso inativo através de seu aplicativo, onde você pode redefinir e, além disso, coletar a maioria dos objetos já criados. Cada chamada para o processo Check
avança o contador de compilação estática por um, dando a qualquer um de nós um método para manter o controle dos produtos rastreados cada vez que eles são criados. O comando Debugger.Break ()
interrompe o aplicativo em um novo elemento válido para que você possa verificar a última memória de todos os objetos. SignalDisposed
– Minha experiência com a detecção de vazamentos de memória com um ótimo detector enquanto trabalhava no add-on do Firefox para obter a Web Semântica me levou à parte anterior sobre a necessidade de variáveis booleanas va Indica se indica Dispose
todos os dispositivos monitorados foram chamados ou não. Para depurar o fluxo de chamada, use este método durante o método Dispose ()
para muitos scripts updateAccept nos quais o método Dispose ()
foi chamado, mas o objeto acabou sendo memória. Observações:
("DEBUG")
bem conhecida que permite operar um indicador de vazamento de memória em seu projeto, apesar do desempenho na versão final de seu bom aplicativo. faço. Mais informações sobre o atributo Condicional
podem ser encontradas aqui. Ideias para desenvolvimento futuro