

Makale numarası: 318263 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalede, hangi bir bellek sızıntısı olduğu anlatılır ve Bellek sızıntılarını bazı olası nedenleri listeler. Ayrıca, algılanan bir bellek sızıntısı ve nasıl, doğru bellek sızıntısı gibi misinterpreted bu makalede anlatılmaktadır.
Bellek sızıntıları uygulama kaynakları yetersiz çalışmasına neden olabilir ve bir uygulamanın kilitlenmesine neden olabilir. Bellek sızıntılarını belirlemek önemlidir. Bellek sızıntısı sorununu C ve C++ geliştiricileri, yıllara ait plagued. Microsoft Visual Studio 2005 veya Microsoft Visual Studio. NET'te bir kapsamlı bir atık toplama paketi ve yönetilen belleği, bellek sızıntıları durdurabilirsiniz, ancak bazı durumlarda, bellek sızıntı için bir program olarak görünebilir.
Bellek sızıntısı tanımıBellek bir programda ayrılır ve işletim sistemi tarafından döndürülen hiçbir zaman rağmen program bellek artık kullanmayan BIR bellek sızıntısı oluşur. Bellek sızıntıları dört temel türleri şunlardır:
TartışmaMicrosoft .NET Framework'de uygulanan çöp toplama paketi nedeniyle, yönetilen kod bir bellek sızıntısı mümkün değildir. Bu iki soruyu önerir: nasıl sonra bellek sızıntısı oluşabilir? Neden bir bellek sızıntısı var görünmüyor?
Uygulamanın bir parçası yönetilmeyen kod kullandığınızda bellek sızıntısı bir .NET Framework uygulamasında oluşabilir. Bu yönetilmeyen kod, .NET Framework ve bellek sızdırıyor çalıştırma modülünün bu sorunla edemiyor.
Ayrıca, proje, yalnızca bir bellek sızıntısı için görüntülenebilir. (Örneğin, DataTable nesneleri) çok büyük nesneler bildirilen ve koleksiyonu (örneğin, bir DataSet) eklenen bu durum oluşabilir. Bu nesnelerin sahibi kaynakları hiçbir zaman yayımlanacak ve tüm program çalışan için kaynakları Canlı kalır. Bu bir sızıntısı gibi görünüyor, ancak gerçekte yalnızca bir belirtisi, bellek programa ayrılmış şekilde olacaktır.
Örneğin, bir DataSet var. Yeni bir sorgu çalıştırdığınızda, her zaman döndürülen veriyi tutmak için bu DataSet için yeni bir DataTable öğesi ekleyin. Büyük tutarları, hiçbir zaman atma veri varsa, DataSet'in hala kullanımda olarak verilerin canlı olarak kalır. Yeterli bir kez oluşursa, yetersiz bellek olasıdır. Bu bellek sızıntısı değildir, ancak bunun yerine, bellek yönetimi, bir sorundur. Aşağıdaki kod örneği Bkz:
Not bu örnekte, yalnızca bir kod parçacığı olan. Bu örnek Microsoft SQL Server'ın yerel bilgisayarda yüklü olduğunu ve bu kodu kullanan kullanıcı SQL Server'ın içerdiği Northwind veritabanına erişimi olduğunu varsayar.
Bu kod açıktır verimsiz ve değil kullanışlı olsa da, nesneleri koleksiyonu (örneğin, tablolar, DataSet derlemesine ekleyerek) eklenirse, koleksiyon Canlı kaldığı sürece nesneleri etkin tutulur olduğunu göstermek için tasarlanmıştır. Bunlar hala başvurulan için bir program Genel düzeyde bildirilir ve nesneler tüm programa bildirilir ve nesneler artık kapsamda olsa tahsilat, yani, eklenen, nesneleri canlı olarak kalır.
Bu oluşur, her zaman program artar kullandığı bellek miktarı. Bellek sonuna kadar program veya nesnelerin sürümünden koleksiyon kadar azaltamaz. Bir performans izleyicisi programı izlemek için bu bellek sızıntısı gibi görünüyor, ancak bu. Program hala bellek üzerinde denetimi yoktur ancak onu serbest seçti. Program denetim hala olduğu gerçeğini bu bellek sızıntısı engeller, ancak program kullanılan bellek miktarını artırmayı tutar gerçeğini bellek sızıntısı gibi görünmesini sağlayabilirsiniz.
Bellek sızıntısı belirtileriYürütme sırasında artırmak bir program kullanmak bellek miktarını devam eder, bu bellek sızıntısı belirtisi olur. (Bu sayı bir performans izleyicisi ile bellek izleyebilir.) Programın kullandığı bellek miktarı zaman içinde kaynakları yetersiz ve kilitlenme çalıştırılacak programın neden olabilir.
Bellek ve kendi yönetimi hakkında daha fazla bilgi için Yardım konuları listesi aşağıdadır:
317297Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerini ziyaret edin:
(http://support.microsoft.com/kb/317297/ )Bu bağlantı, bir kısmı veya tamamı ingilizce olan içeriğe işaret edebilir. bellek sızıntısı, kilitlenme ve Visual Basic. NET'te yarış durumları, hata ayıklama için yol haritası
http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx
(http://msdn.microsoft.com/en-us/library/x98tx3cf.aspx)
http://msdn.microsoft.com/en-us/library/fz5w87ad.aspx
(http://msdn.microsoft.com/en-us/library/fz5w87ad.aspx)
http://msdn.microsoft.com/en-us/library/kxx6e7z6.aspx
(http://msdn.microsoft.com/en-us/library/kxx6e7z6.aspx)
http://msdn.microsoft.com/en-us/library/s3aw423e.aspx
(http://msdn.microsoft.com/en-us/library/s3aw423e.aspx)
Makale numarası: 318263 - Last Review: 6 Aralık 2006 Çarşamba - Gözden geçirme: 4.7
Bu makaledeki bilginin uygulandığı durum:
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:318263
(http://support.microsoft.com/kb/318263/en-us/ )


Contact us for more help