Les performances de ma application se détériorent à mesure qu'elle continue de durer toute la journée.C# Diminution de la performance de l'application due à la collecte des ordures?
Je suppose que c'est un garbage collector, comment puis-je vérifier cela? Existe-t-il un moyen de savoir quel objet/fonction est à l'origine de la surcharge de la récupération de place?
Existe-t-il un moyen d'effectuer manuellement la collecte de place par programme pour effacer la mémoire des fuites?
Merci,
modifier À une extrémité de l'application, il reçoit un rappel d'un api non géré pour accepter les données, les processus, puis d'envoyer des messages de prise sur la seconde extrémité. À partir de la seconde extrémité, il récupère ensuite les données de suivi sur les messages qu'il a envoyés. L'application ouvre 5-6 sockets pour envoyer et recevoir des données à partir de la seconde extrémité. Il enregistre constamment beaucoup de données dans le système de fichiers Windows sur un thread séparé. Mes mesures incluent l'horodatage (compteur de queryperformance) juste avant d'envoyer des données et l'horodatage à nouveau lorsque je reçois le suivi d'un autre processus sur le socket. J'ai remarqué que sur plusieurs sockets que j'ouvre, la détérioration des performances se produit sur une seule connexion socket.
Le traitement entre les données d'horodatage et d'envoi de données sur le socket inclut l'itération à travers 2 arraylist qui n'a pas plus de 5-6 objets et quelques rappels.
L'utilisation de la mémoire à partir de la fenêtre Task MAnager ne monte pas considérablement. De 96 Mo à 100 Mo après 6-7 heures de fonctionnement.
Ci-dessous sont quelques observations de l'exécution de perfmon.
« survivants de finanlization » et « mémoire finalisation promu de Gen 0 » augmenter progressivement avec le temps
« Gen 0 collections » allant de 1819 au début de 6000 au bout de 4 heures. "Collections Gen 1" représente 10% -12% de la collection Gen 0 et "Collection Gen 2" 1% ou moins. Considérant que les numéros de collection Gen 0 sont cumulatifs, ce n'est probablement pas une préoccupation majeure.
poignées GC » ont augmenté de 850ish à 4000.
duplication possible de [en utilisant perfmon pour détecter la détérioration des performances] (http://stackoverflow.com/questions/3991681/using-perfmon-to-detect-performance-detioration) –