Bir Visual Basic 2005 veya Visual Basic 2008 uygulamasının bir sınıfın örneğini oluşturur çalıştırdığınızda bellek kullanımı artıyor

Makale çevirileri Makale çevirileri
Makale numarası: 919481 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Belirtiler

Şu senaryoyu inceleyin:
  • Microsoft Visual Studio 2005 veya Visual Studio 2008'de bir Microsoft Visual Basic uygulaması oluşturma.
  • Visual Basic uygulamasını bir sınıf içerir.
  • Sınıfı bir olay içerir.
  • Visual Basic uygulamasını sınıfının bir örneğini oluşturur.
  • Hata ayıklama modunda Visual Basic uygulamasını derleyin.
Bu senaryoda, bellek kullanımı artar, Visual Basic uygulamasını çalıştırın.

NotBu davranış, aşağıdaki koşullar geçerli olduğunda fark daha büyük olasılıkla şunlardır:
  • Visual Basic uygulaması sürekli olarak uzun bir süre için çalışır.
  • Visual Basic uygulamasını birçok sınıfının örnekleri, bir olayı içeren oluşturur. Örnekleri yeterli bir kez oluşturulursa, uygulama sonunda "" bellek yetersiz veya bir OutOfMemoryException başlayamaz hata. Örneğin, Visual Basic uygulamasını sınıfının birden çok örneğini oluşturan bir döngü içeriyor.

Neden

Düzenle ve devam özelliği, Visual Studio 2005 veya Visual Studio 2008 için hata ayıklama tutar oluşturulan nesnelere zayıf başvuru listesi bu sorun oluşur. Oluşturulan nesne bir olayı içeren bir sınıf, bu zayıf başvuru program süresince tutulur. Bu davranış, bellek kullanımı artıyor.

Çözüm

Bu sorunu gidermek için aşağıdaki yöntemlerden birini kullanın.

Yöntem 1: Visual Basic uygulamayı yeniden başlatın.

Visual Basic uygulamasını yeniden başlatın. Bunu yaptığınızda, bellek serbest.

Yöntem 2: yayın modunda Visual Basic uygulamayı derleyin...

Visual Basic uygulamasını sürüm modunda derleyebilirsiniz. Yayım modunda derlenen bir Visual Basic uygulaması çalıştırdığınızda, bir olayı içeren bir sınıf örneği oluşturduğunuzda, bellek kullanımı artmaz.

Daha fazla bilgi

Sorunu yeniden oluşturma adımları

  1. Visual Studio 2005 veya Visual Studio 2008'i başlatın.
  2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
  3. Proje türü altında Visual Basic ' ı tıklatın. Visual Basic</a0> proje tipini göremiyorsanız, Diğer diller ' nı genişletin ve Visual Basic</a1>'ı tıklatın.
  4. Şablonları altında Konsol uygulaması) tıklatın.
  5. Projenin adını yazın ve Tamam ' ı tıklatın.
  6. Kod penceresinde kodu aşağıdaki kodla değiştirin.
    Module Module1
    
      Private Sub CreateClassWithEvent()
        Dim TestClass As New CLeak
      End Sub
    
      Sub Main()               
        ' This loop infinitely creates a class that contains an event.
        While True
          CreateClassWithEvent()
          System.GC.Collect()
          System.GC.WaitForPendingFinalizers()
          Threading.Thread.Sleep(50)
        End While
      End Sub
    
    End Module
    
    Class CLeak
      Event myEvent()
    End Class
    
  7. Başlat'ı hata ayıklamaHata Ayıkla menüsünde tıklatın.

Özellikler

Makale numarası: 919481 - Last Review: 27 Mart 2009 Cuma - Gözden geçirme: 2.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Studio 2008 Standard Edition
  • Microsoft Visual Studio 2008 Professional Edition
  • Microsoft Visual Studio 2005 Team System Architect Edition
  • Microsoft Visual Studio 2005 Team System Developer Edition
  • Microsoft Visual Studio 2005 Team System Test Edition
  • Microsoft Visual Studio 2005 Team System Team Foundation:
  • Microsoft Visual Studio 2005 Standard Edition
  • Microsoft Visual Studio 2005 Professional
  • Microsoft Visual Studio 2005 Express Edition
  • Microsoft Visual Basic 2005
Anahtar Kelimeler: 
kbmt kbtshoot kbprb KB919481 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:919481

Geri Bildirim Ver

 

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