J'ai exécuté des tests de charge sur une application Web de production ASP.NET et je vois un grand nombre de System.WeakReferences créées sur le tas. Dans environ 15 minutes sous charge, la mémoire de tas a atteint environ 3 Go et j'ai environ 5 000 000 références à System.WeakReference. L'exécution d'un nettoyage forcé de toutes les générations ne libère pas ces références. J'ai vu des messages à propos de la classe auxiliaire __ENCLIST qui, si les assemblys sont compilés dans debug, peut créer des WeakReferences pour tous les objets créés, au début je pensais que c'était le problème, mais j'ai vérifié que tous les assemblys déployés sont intégrés.Qu'est-ce qui pourrait expliquer plus de 5 000 000 instances System.WeakReference sur le tas géré?
J'utilise WinDbg pour déboguer le processus, voici les quelques dernières lignes de !dumpheap -stat
000007fef788e0c0 39253 18510000 System.Collections.Hashtable+bucket[] 00000000021bf120 94336 151023192 Free 000007fef7887e98 5959 189838752 System.Char[] 000007fef7874390 517429 589750224 System.Object[] 000007fef78865a0 1531190 1230824112 System.String 000007fef787dab8 51723338 1655146816 System.WeakReference
Comme vous pouvez le voir sur les 1,5 Go de mémoire a été consommée par ces System.WeakReferences.
Est-ce que quelqu'un a une idée de ce qui pourrait créer toutes ces WeakReferences?
Avez-vous essayé profiler l'application - certains profileurs vous dira quelle méthode allouée etc .. De plus, les WeakReferences doivent être tenus de faire quelque part pour un gcroot! pourrait jeter un peu de lumière. –
la sécurité en chiffres? –
Merci Michael, j'ai exécuter gcroot et la sortie est comme suit DOMAIN (000000000213D530): MANCHE (Épinglé): 19813f0: Racine: 000000017f4cf0e0 (System.Object []) -> 000000013f512608 (System.Collections.Generic .List'1 [[System.WeakReference, mscorlib]]) -> 000000018f932060 (System.Object []) -> 00000000ffe1b1a0 (System.WeakReference) Toutes les instances reconduisent à un Épinglé System.Object [ ], cet objet [] contient une énorme quantité d'autres données, des idées? – nickc