SORU
28 Kasım 2011, PAZARTESİ


Nasıl bir bellek sızıntısı etrafında almak için .NET Tarayıcı kontrol?

Bu ile yaygın olarak bilinen, eski bir konudur .NET Tarayıcı kontrol.

Özet: Sahip .NET tarayıcıda hiçbir zaman serbest sayfa artırır bellek kullanımı Gidin kontrol edin.

Yeniden bellek sızıntısı: forma Tarayıcı denetimi Ekleyin. Bunu her sayfa için istediğiniz Gezinmek için kullanın. hakkında:boş çalışır, kullanımı 100MB ve daha sonra başka bir yerde bellek neredeyse hiç fark tarama serbest kadar Google Görüntülerde aşağı kaydırma daha dramatik bir gösteri.

Bir uygulama için geçerli benim gereksinimleri uzun süre çalışan, sınırlı IE 7 tarayıcı penceresi gösterme. Kendisi 7 kancaları bazı piç Kur, BHO ve grup politikaları ile çalışan, bu sırada geri dönüş gibi görünüyor olsa da istenilen değil. Windows Forms uygulaması bir tarayıcı içine gömmek. Farklı bir tarayıcı kullanarak temel benim için kullanılabilir bir seçenek değil. 7 İÇİN gereklidir.

Önceki konuları ve makaleleri bu bilinen bir bellek sızıntısı ile ilgili:

Genellikle önerilen çalışmıyor giderir:

  • Farklı sayfalara gidiyor önemli değil. hakkında:boş sızıntısı tetikler. Bir sayfa javascript, veya herhangi bir diğer ekstra teknoloji olmasını gerektirmez.
  • Internet Explorer'ın farklı sürümleri kullanarak önemli değildir. 7, 8 ve 9 aynı belirtiler gösteren ve duyduğum kadarıyla tüm sürümleri aynı bellek denetimi sızıntısı var.
  • ()Elden kontrol ıng yardımcı olmuyor.
  • Çöp Toplama yardım etmez. (Aslında, bu işe yaptığım araştırma sızıntısı Webbrowswer kontrol sarar yönetilmeyen COM kodunda olduğunu gösterir.)
  • Ve -1, -1 için kullanılabilir bellek ayarlama işlemi minimize (() SetProcessWorkingSetSize veya simimlar.) sadece fiziksel bellek kullanımı, sanal bellek üzerinde hiçbir etkisi azaltır.
  • Tarayıcı Arıyorum.() Metodu bir çözüm değil, sadece biraz sızıntıyı en aza indirmek daha yapmadan bir şey ama statik web sayfası, kullanma işlevlerini keser.
  • Tamamen başka bir Gezinme önce yüklemek için bir belge için bir bekleme zorlama da yardımcı olmuyor.
  • Ayrı bir türün denetimi yükleme sorunu düzeltmez. (Bunu kendim yapmadım, ama araştırma diğerleri bu yol ile hiçbir başarıya sahip gösterir.)
  • Csexwb2 gibi farklı bir sarıcı kullanarak bu da aynı sorundan muzdarip olarak yardım etmez.
  • Geçici İnternet Dosyaları, önbellek temizleme, hiçbir şey yapmaz. Sorun diskte bellekte etkin değil.

Bellek tüm uygulama kapatıldı ve yeniden başlatıldığında silinir.

Eğer bu sorun için bir düzeltme eğer COM veya Windows Denetim doğrudan API kendi tarayıcısı yazmak için hazırım. Elbette tercih ederim bir daha az karmaşık düzeltme; tercih ederim önlemek inerken daha düşük düzeyde bilmek olmaz, çünkü ben olmak istemiyorum yeniden icat tekerlek açısından özellikleri desteklenen bir tarayıcı. -Your-kendi roll tarzı bir tarayıcıda çoğaltarak 7 özellikleri ve standart olmayan davranışları Letalone.

Yardım?

CEVAP
1 Aralık 2011, PERŞEMBE


Bu sızıntı sürecinde yapacağın hiçbir şey o hafıza geri gidiyor yönetilmeyen bellek sızıntısı gibi görünüyor. Sonrası sızıntı oldukça kapsamlı bir şekilde önlemek ve başarı olmadan çalıştığını görebiliyorum.

Mümkünse farklı bir yaklaşım öneriyorum. Web tarayıcı denetimi kullanan ayrı bir uygulama oluşturmak ve uygulamayı başlatmak. Kendi içinde mevcut uygulama yöntemi here yeni oluşturulan uygulama gömmek için açıklanan kullanın. Bu uygulama ile iletişim XML kullanarak ya .NET uzak. Zaman zaman çocuk süreç çok hafızasına alarak önlemek için yeniden başlatın.

Tabii ki, bu oldukça karmaşık çözüm süreci muhtemelen çirkin görünebilir yeniden başlatın. Belki de her zaman kullanıcı başka bir sayfaya gider tüm tarayıcı uygulamasını yeniden başlatmak için çare olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BetterCoder

    BetterCoder

    17 Aralık 2012
  • Dive In

    Dive In

    17 Temmuz 2013
  • YouplusmeVEVO

    YouplusmeVEV

    4 EYLÜL 2014