J'ai créé l'application WCF qui s'exécute sur le service Windows. Il a été installé en utilisant Windows Installer. J'ai suivi la procédure mentionnée dans l'article suivant pour le même.Le service Windows WCF ne libère pas les ressources/la mémoire après chaque appel
http://msdn.microsoft.com/en-us/library/bb332338.aspx#msdnwcfhc_topic4
La plupart des propriétés WCF sont conservés par défaut pour le protocole net.tcp, par exemple d'appel et ainsi de suite.
La consommation de mémoire du service ne cesse d'augmenter après chaque appel et ne diminue pas. À la fin, il jette OutOfMemory consommation. L'application renvoie des données basées sur des chaînes très lourdes. Avec memory-profiler j'ai trouvé que la mémoire est toujours allouée aux objets string et augmente pendant l'appel. Selon ma compréhension de la chaîne, les objets gérés devraient libérer les données une fois hors de portée. Informez-moi si d'autres informations de configuration/codage sont nécessaires en particulier.
Les chaînes, comme toute autre chose, ne seront libérées que lorsqu'aucune référence n'y est faite. Si vous voyez que les chaînes ne sont pas libérées, c'est un symptôme, pas le problème. Déterminez quel objet serait maintenu sur une instance de cette chaîne, puis déterminez qui détient toujours une référence à cet objet. Ou ignorez les chaînes dans votre profileur, et regardez lesquelles de vos * classes * fuient. –
J'ai vérifié mon code dans perf mon pour les grands objets LOH msdn.microsoft.com/en-us/magazine/cc534993.aspx et constaté qu'ils sont présents. Recherche net je ne pouvais pas trouver un moyen approprié pour gérer le comportement LOH. – BigBoss