REVISIÓN: Pérdida de memoria al iniciar excepciones desde bloques de excepciones anidados

Seleccione idioma Seleccione idioma
Id. de artículo: 810178 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando se produce un error de excepción de una cláusula catch, perderá el primer objeto de excepción.

Por ejemplo, cuando se produce un error mientras se está ejecutando el programa, es posible que desea utilizar una instrucción try-catch para controlar la excepción. Sin embargo, si el código que controla la excepción en la cláusula catch inicia otra excepción, nunca se eliminará el primer objeto de excepción por el recolector de elementos no utilizados de .NET Framework. Esto produce una pérdida de memoria en el proceso de llamada.

Solución

Ahora tiene a su disposición una revisión para la que Microsoft proporciona soporte técnico, pero que sólo se diseñó para corregir el problema descrito en este artículo. Aplíquela sólo a equipos que experimenten este problema específico. Se efectuarán pruebas adicionales de esta revisión. Por lo tanto, si no se ve muy afectado por este problema, Microsoft recomienda que espere al próximo .NET Framework service pack que contenga esta revisión.

Para resolver este problema inmediatamente, póngase en contacto con los Servicios de soporte técnico de Microsoft con el fin de obtener la revisión. Para obtener una lista completa de los números de teléfono de servicios de soporte de técnico de Microsoft e información acerca de los costos de soporte, visite el siguiente sitio Web:
http://support.microsoft.com/contactus/?ws=support
Nota : en casos especiales, los que normalmente se incurre llamadas de soporte técnico pueden cancelarse si un profesional de soporte técnico de Microsoft determina que una actualización específica resolverá el problema. Los costos habituales de soporte se aplicarán a las preguntas de soporte técnico adicionales y problemas que no guarden relación con la actualización en cuestión.

La versión en inglés de esta revisión tiene los atributos de archivo enumerados en la siguiente tabla u otros posteriores. Las fechas y horas de estos archivos aparecen en la hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
   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

Más información

Pasos para reproducir el comportamiento

Nota El siguiente es información mínima que es relevante para demostrar el problema descrito en este artículo.

Para reproducir el problema, incluya el código siguiente en un proyecto de Visual C# .NET y, a continuación, ejecútela directamente (no en el IDE o en cualquier otro depurador):
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();
}
Observará que este código pérdidas de identificadores de colección de elementos no utilizados 2 para cada iteración.

Puede controlar este comportamiento observando los contadores siguientes:
  • Memoria de .NET CLR - númeroDeBytes en todos los montones aumentará por iteración
  • .NET CLR Memoria - Handles # GC se incrementarán en 2 por iteración
Para obtener información adicional acerca de cómo utilizar PerfMon, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
248345Cómo crear un registro con el Monitor de sistema en Windows 2000

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo.

Propiedades

Id. de artículo: 810178 - Última revisión: sábado, 01 de febrero de 2014 - Versión: 2.4
La información de este artículo se refiere a:
  • Microsoft .NET Framework 1.0 Service Pack 2
Palabras clave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbnetframe100presp3fix kbfix kbbug KB810178 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 810178

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