0

Je souffre d'une exception "Mémoire insuffisante" dans mon service Windows après l'avoir exécuté pendant quelques heures sous une énorme charge de travail. J'utilise les compteurs de performance suivants pour détecter les fuites de mémoire:Grandir dans le compteur de performance "Virtual bytes"

  • octets dans tous les tas

  • octets privés
  • octets virtuels

Les 2 premiers compteurs sont en train de monter et descendre régulièrement ... Je ne vois rien de mal en eux. mais le 3ème croît très lentement avec le temps, le compteur monte et descend aussi mais à la fin il augmente avec le temps. Qu'est-ce que cela signifie?

Mon Win Service est .NET qui appelle certaines fonctions d'une DLL C++ et utilise également une tierce partie qui contient du code non géré.

Est-ce que cela indique une fuite de mémoire dans le code managé/code non géré? ou simplement cela ne va pas aider?

Merci

+0

Informations insuffisantes pour répondre à la question. Allouez-vous de la mémoire dans votre code C#? Pouvez-vous poster du code? –

+0

Les DLL C++ ne sont pas mon code, ils sont tous des tiers, j'alloue et libère beaucoup de ressources dans mon code managé, je ne peux pas tout les poster, ils sont trop nombreux, certains sont liés à GDI +, ADO. NET et de nombreux autres types d'objets. Je crois aussi que le code non géré le fait fréquemment (en raison de sa fonctionnalité) –

Répondre

1

Jetez un oeil à la clr profiler afin que vous puissiez surveiller votre utilisation. S'il se bloque seulement sous la charge de hudge, il peut ne pas y avoir une erreur autant qu'une nouvelle contrainte de conception pour gérer la charge.

+0

hmmm, je ne sais pas pourquoi ce profileur n'a pas aimé mon Win Service, il montre toujours une boîte de dialogue: "En attente de service pour commencer Common Language Runtime ", le profil est en mesure de démarrer le service, mais alors il montre cette boîte de dialogue. –

Questions connexes