Düzeltme: Özel durumlar iç içe özel durum bloğu ' gönderme sırasında bellek sızıntısı

Makale çevirileri Makale çevirileri
Makale numarası: 810178 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Ilk özel durum nesnesi, bir özel durum hatası, bir catch yan tümcesi yaratıldığında sızdırıyor.

Örneğin, program çalışırken bir hata oluştuğunda, özel durum işlenecek bir try-catch ifade kullanmak isteyebilirsiniz. Ancak, catch yan tümcesi içinde özel durum işleme kodu başka bir özel durum oluşturduğunda, ilk özel durum nesnesi hiçbir zaman .NET Framework çöp toplayıcısını tarafından silinir. Bu arama işleminde bellek sızıntısına neden oluyor.

Çözüm

Microsoft desteklenen bir düzeltme yayımlamıştır, ancak yalnızca bu makalede açıklanan sorunu gidermesi amaçlanmaktadır. Düzeltmeyi yalnızca bu sorunla karşılaşmış olan bilgisayarlara uygulayın. Bu düzeltmeye ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi olarak, Microsoft, bu düzeltmeyi içeren bir sonraki .NET Framework hizmet paketini beklemenizi önerir.

Bu sorunun derhal çözülmesini sağlayacak düzeltmeyi edinmek için Microsoft Ürün Destek Hizmetleri'ne başvurun. Microsoft Ürün Destek Hizmetleri'nin telefon numaralarının tam listesi ve destek ücretleriyle ilgili bilgi için, aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=support
Not: Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözümleyeceğini belirlerse, destek aramaları için çözümleyeceğini giderler özel durumlarda, iptal edilebilir. Söz konusu güncelleştirme ile ilgili olmayan ek destek soruları ve sorunlar için normal destek ücretleri geçerlidir.

Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yenisi) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'e (UTC) göre listelenir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için <a0></a0>, Denetim Masası'ndaki Tarih ve Saat aracında saat dilimi sekmesini kullanın.
   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

Daha fazla bilgi

Davranışı Yeniden Oluşturma Adımları

Not Bu makalede incelenen sorunu göstermek, ilgili bilgiler aşağıdadır.

Sorunu yeniden oluşturmak için <a0></a0>, aşağıdaki kod bir Visual C# .NET projede içerir ve çalıştırın, doğrudan (IDE değil veya başka bir hata ayıklayıcı):
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();
}
Bu kod, her bir yinelemenin 2 çöp toplama tanıtıcıları sızdırıyor görürsünüz.

Bu davranış, aşağıdaki PerfMon Sayaçlarını bakarak izleyebilirsiniz:
  • .NET CLR belleği - BaytSayısı tüm yığınlardaki yineleme artırır
  • .NET CLR, Her yineleme 2'olarak, <a1>#</a1> GC tanıtıcıları bellek - artırır
PerfMon kullanma hakkında ek bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
248345Windows 2000'de sistem izleyicisi'ni kullanarak bir günlük oluşturma

Durum

Microsoft, bu makalenin başında listelenen Microsoft ürünlerinde bir sorun olduğunu onaylamıştır.

Özellikler

Makale numarası: 810178 - Last Review: 30 Ocak 2014 Perşembe - Gözden geçirme: 2.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 1.0 Service Pack 2
Anahtar Kelimeler: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbnetframe100presp3fix kbfix kbbug KB810178 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir: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