Quel est le meilleur moyen de localiser une fuite de mémoire qui se trouve uniquement dans la boîte de test/relâchement d'un client, et nulle part ailleurs?Meilleure façon de repérer une fuite de mémoire (C#) visible uniquement sur la boîte d'un client
Répondre
(Cette question est un peu drôle, parce que je suis suivi d'une fuite de mem qui ne figure pas sur ma machine ...)
Si l'utilisateur a le problème de manière cohérente, prendre un stackdump et analyser de façon standard
Essayez un profileur de mémoire comme ANTS Profiler.
Voici une option: Donnez-leur une boîte où la fuite n'est pas présente.
Parfois, ce n'est pas le code.
Édition: Il s'agit du code, des données ou de la configuration.
Ou le .NET Framework, le système d'exploitation, les pilotes, IIS ou COM (automatisation d'Excel, par exemple), ou similaire. Mon hypothèse est que la fuite de mémoire n'est pas reproductible sauf sur la boîte du client (à laquelle le dev ne peut pas accéder pour le débogage).
Donc, vous voulez dire que le matériel alloue de la mémoire sans jamais le rendre? Whoa! Je suis effrayée. – xmjx
Le matériel ne doit pas être capable de perdre de la mémoire. Mais les conducteurs mal écrits peuvent le faire. –
Il s'agit d'un code, de données ou d'une configuration.
Puisque vous dites que le code n'est pas défectueux 100% du temps, je blâmerais la configuration. Prenez une copie de la configuration (et éventuellement de certaines données) et essayez de répliquer le problème; vous ne saurez pas que vous avez trouvé et réparé sans reproduction.
Enfin, résolvez-le avec un profileur de mémoire.
PerfMon peut être utile (http://dotnetdebug.net/2005/06/30/perfmon-your-debugging-buddy/). Essayez les différents compteurs qui peuvent aider à affiner les ressources qui coulent, et à quelle vitesse, etc.
essayez deleaker ou un débogueur similaire (vld, purifier) - doit aider ... – MastAvalons
Je conseille également deleaker pour ce cas. –