CORRECTIF : fuite de mémoire lors de la génération d'exceptions à partir de blocs Exception imbriquée

Traductions disponibles Traductions disponibles
Numéro d'article: 810178 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsqu'une erreur d'exception est générée à partir d'une clause catch, le premier objet exception est fuite.

Par exemple, lorsqu'une erreur se produit pendant que le programme est exécute, vous souhaiterez peut-être utiliser une instruction try-catch pour traiter l'exception. Toutefois, si le code qui gère l'exception de la clause catch lève une autre exception, le premier objet exception ne sera jamais supprimé par le garbage collector .NET Framework. Cela provoque une fuite de mémoire dans le processus appelant.

Résolution

Un correctif est désormais disponible auprès de Microsoft, mais il ne vise qu'à corriger le problème décrit dans cet article. S'il s'appliquent uniquement aux ordinateurs rencontrant ce problème spécifique. Ce correctif peut être soumise tests supplémentaires. Par conséquent, si vous n'êtes pas gravement touché par ce problème, Microsoft vous recommande d'attendre le prochain service pack .NET Framework qui comprendra ce correctif.

Pour résoudre ce problème immédiatement, contactez Microsoft Services de support pour obtenir le correctif. Pour une liste complète des numéros de téléphone des services de support technique Microsoft et des informations sur les frais de support technique, reportez-vous au site de Web Microsoft suivant :
http://support.microsoft.com/contactus/?ws=support
Remarque : dans certains cas, les frais aucuns de support peuvent être facturés si un technicien du support technique Microsoft détermine qu'une mise à jour spécifique peut résoudre votre problème. Les coûts de support technique typique s'appliqueront aux autres questions et problèmes non traités par la mise à jour en question.

La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont exprimées en coordinated universal temps (UTC). Lorsque vous affichez les informations de fichier, il est convertie en heure locale. Pour connaître le décalage entre l'heure UTC et l'heure locale, utilisez l'onglet Fuseau horaire dans l'outil Date et heure du Panneau de configuration.
   Date         Time   Version       Size       File name
   --------------------------------------------------------------
   16-Nov-2002  04:05  1.0.3705.378     69,632  Corperfmonext.dll
   16-Nov-2002  14:28  1.0.3705.378  1,953,792  Mscorlib.dll
   16-Nov-2002  03:56                   10,272  Mscorlib.ldo
   16-Nov-2002  04:04  1.0.3705.378  2,269,184  Mscorsvr.dll
   16-Nov-2002  04:04  1.0.3705.378  2,269,184  Mscorwks.dll

Plus d'informations

Procédure pour reproduire le comportement

note Voici les informations minimales qui sont pertinentes pour illustrer le problème traité dans cet article.

Pour reproduire le problème, inclure le code suivant dans un projet Visual C# .NET, puis exécutez-le directement (pas dans l'IDE ou dans n'importe quel autre débogueur):
for (;;)
{
	try
	{
		throw new System.Exception("I leak.");
	}
	catch
	{
		try
		{
			throw new System.Exception("I do not leak.");
		}
		catch
		{
		}
	}
	Console.Write("Press ENTER to iterate.");
	Console.ReadLine();
}
{essayez {lève nouveau System.Exception("I leak.");} catch {essayez {lève nouveau System.Exception (« je ne faire pas fuite. »);} catch {}} Console.Write (« appuyez sur ENTRÉE pour effectuer une itération."); Console.ReadLine();}Vous remarquerez que ce code de fuites de handles de collection de garbage 2 pour chaque itération.

Vous pouvez surveiller ce comportement en examinant les compteurs PerfMon suivants :
  • .NET CLR Memory - #Bytes dans tous les segments augmentera par itération
  • .NET CLR Memory - poignées # GC sont incrémenté 2 par itération
Pour plus d'informations sur la façon d'utiliser PerfMon, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
248345 Comment faire pour créer un journal de l'aide du Moniteur système dans Windows 2000

Statut

Microsoft a confirmé que c'est un problème dans les produits Microsoft répertoriés au début de cet article.

Propriétés

Numéro d'article: 810178 - Dernière mise à jour: samedi 8 février 2014 - Version: 2.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft .NET Framework 1.0 Service Pack 2
Mots-clés : 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbnetframe100presp3fix kbfix kbbug KB810178 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 810178
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com