Melhor maneira de rastrear um vazamento de memória (C #), apenas visível na caixa de um cliente
-
02-07-2019 - |
Pergunta
Qual é a melhor maneira de rastrear um vazamento de memória que só é encontrado na caixa de teste / liberação de um cliente, e em nenhum outro lugar?
Solução
(Esta pergunta é meio engraçado, porque eu estou rastreando um vazamento mem que não está presente na minha máquina ...)
Outras dicas
Tente um profiler de memória, como ANTS Profiler .
Se o usuário tem o problema de forma consistente, dê uma stackdump e analisar da maneira padrão
É ou código, dados ou configuração.
Uma vez que você diz que o código não está com defeito 100% do tempo, eu culparia configuração. Tomar uma cópia da configuração (e, opcionalmente, alguns dados) e tentar replicar o problema; você não vai saber que você encontrou e fixa-lo sem reprodução.
Finalmente, resolvê-lo com um profiler de memória.
Aqui está uma opção:. Dê-lhes uma caixa onde o vazamento não está presente
Às vezes, não é o código.
Edit: É tanto o código, os dados ou a configuração.
Ou o .NET Framework, o sistema operacional, os drivers, o IIS, ou COM (automatizar o Excel, por exemplo), ou assim por diante.
A minha suposição é que o vazamento de memória não é reproduzível, exceto na caixa do cliente (que o dev não pode ser permitido o acesso para depuração).
PerfMon pode ser útil ( http://dotnetdebug.net / 2005/06/30 / perfmon-your-depuração-buddy / ). Existem vários contadores que podem ajudar a diminuir o que recurso está vazando, e qual a taxa, etc.