bir Bellek sızıntısı hatalı bellek tahsisi nedeniyle bir bilgisayar programında kaynakların yanlış yerleştirilmesidir. Kullanılmayan bir RAM konumu yayınlanmamış olarak kaldığında olur. Bellek sızıntısı, gerekenden daha fazla RAM kullanan bir programa atıfta bulunan alan sızıntısı ile karıştırılmamalıdır. Windows 10/8/7 sistemindeki bir bellek sızıntısının, kullanımda olmamasına rağmen belleğe erişilemediğinde gerçekleştiği söyleniyor.
Windows 10'da Bellek Sızıntıları
Başlamadan önce, Bellek sızıntısının hata ayıklamak için bir yazılım sorunu olduğunu bilmelisiniz - örneğin Java, JavaScript, C/C++, Windows, vb. RAM veya sabit diskin fiziksel olarak değiştirilmesi gerekli değildir.
Bu neden kötü
Bir bellek sızıntısının kötü olduğu açık çünkü bu bir hata, sistemdeki bir kusur. Ancak sistemi tam olarak nasıl etkilediğini öğrenelim:
- Bellek, kullanılmadığında bile serbest bırakılmadığından, belleğin tükenmesine neden olur.
- Belleğin tükenmesi yazılımın eskimesine neden olur.
- Azaltılmış kullanılabilir bellek, yanıt süresinin artmasına ve sistem tarafından düşük performansa neden olur.
- Denetlenmeyen bir bellek sızıntısı, sonunda bir uygulamanın çökmesine neden olabilir.
Bir bellek sızıntısını tanımlamak için bir programcının programın kaynak koduna erişmesi gerekir.
Sızıntıyı bulmak
Bir sorunu çözmek için önce onu tanımlamamız gerekir. Bir bellek sızıntısını bulmak için temel adımlar şunlardır:
- Olumlama: Sızıntı olup olmadığını belirleme.
- Çekirdek modu bellek sızıntısını bulma: Çekirdek modu sürücü bileşeninin neden olduğu sızıntıyı bulma.
- Kullanıcı modu bellek sızıntısını bulma: Kullanıcı modu sürücüsü veya uygulamanın neden olduğu sızıntıyı bulma.
Bellek ayırma
Uygulamaların RAM tahsis ettiği farklı modlar vardır. Kullanımdan sonra alan boşaltılmazsa, ayırma modundan bağımsız olarak bellek sızıntısı meydana gelir. Bazı yaygın ayırma kalıpları şunlardır:
- Yığın bellek tahsisi için HealAlloc işlevi. C/C++ çalışma zamanı eşdeğerleri malloc ve new.
- İşletim sisteminden doğrudan tahsis için VirtualAlloc işlevi.
- Uygulama için çekirdek belleği tutmak için Kernel32 API'leri. Örnek, CreateFile, CreateThread.
- User32 API'leri ve Gdi32 API'leri.
Bellek sızıntılarını önleme
Önlemenin tedavi etmekten daha iyi olduğunu hepimiz biliyoruz, bu yüzden burada bir bellek sızıntısını önlemenin bazı yolları var.
İzleme alışkanlıkları
Bireysel programlar ve uygulamalar tarafından anormal RAM kullanımına dikkat etmeniz gerekir. düğmesine basarak Windows Görev Yöneticisine gidebilirsiniz CTRL+SHIFT+ESC ve Tutamaçlar, Kullanıcı Nesneleri, GDI Nesneleri vb. gibi sütunları ekleyin.
Bu, kaynak kullanımını kolayca izlemenize yardımcı olur.
oku: Bilgisayardaki Bellek Türleri Nelerdir??
Bellek sızıntılarını teşhis etmek için Microsoft araçları
Çeşitli araçlar, çeşitli ayırma modları için bellek sızıntılarını teşhis eder:
- Uygulama Doğrulayıcı, yığın sızıntılarını teşhis eder.
- UMDH (Windows Hata Ayıklama Araçları'nın bir bileşeni), yığın bellek ayırmalarını izleyerek bireysel işlemler için sızıntıları teşhis eder.
- RAM kullanımının kapsamlı bir analizi için Trace Capture.
- Xperf, yığın ayırma modellerini de izler.
- CRT Debug Heap, yalnızca yığın tahsislerini izlemekle kalmaz, aynı zamanda sızıntıları en aza indirmek için kodlama uygulamalarına da olanak tanır.
- JavaScript Bellek Sızıntısı Dedektörü, kodlardaki bellek sızıntılarında hata ayıklar.
Kullanım İpuçları
- Çekirdeği kullan ÜSTESİNDEN GELMEKWin32 kaynakları ve yığın ayırmaları için s ve diğer akıllı işaretçiler.
- ATL kitaplığından çekirdek ayırmaları için otomatik kaynak yönetimi sınıfları alın. C++ standardı auto_ptr yığın tahsisleri için.
- COM arabirimi işaretçilerini "akıllı işaretçiler" içinde aşağıdakilerin yardımıyla kapsülleyin: _com_ptr_t veya _bstr_t veya _variant_t.
- izlemek .Anormal bellek kullanımı için NET kodu.
- Bir işlevin sonunda çoğu bloktaki değişkenlerden ayırmaların serbest bırakılmasını sağlamak için işlevler için birden çok çıkış yolundan kaçının.
- Yerel istisnaları yalnızca _finally bloğundaki tüm ayırmaları serbest bıraktıktan sonra kullanın. C++ istisnalarını kullanmak için tüm yığını ve ayırmaları akıllı işaretçilere sarın.
- her zaman arayın PropVariantClear PROPVARIANT nesnesini yeniden başlatmadan veya atmadan önce işlev.
Windows'ta bellek sızıntılarını giderme
Bellek sızıntılarını önlemenin çeşitli yolları gibi, bellek sızıntılarını durdurmanın da çeşitli yolları vardır. Ancak başlamadan önce, önce bir sistem geri yükleme noktası oluşturmayı unutmayın.
1] İşlemleri kapatın ve yeniden başlatın.
Gereksiz bir işlemin çok fazla RAM aldığını görürseniz, işlemi Görev Yöneticisi'nde sonlandırabilirsiniz. Boşalan alanın diğer işlemler tarafından kullanılabilmesi için cihazı yeniden başlatmanız gerekecek. Yeniden Başlatma olmadan bellek sızıntısı sorunu çözülmeyecek. Bilgisayarı yavaşlatan hatalara sahip belirli bir süreç Runtime Broker'dır. Bunu tek başına devre dışı bırakmak işe yararsa deneyin.
2] Bellek Tanılama Araçları
Windows için dahili Bellek Tanılama Aracına erişmek için:
- Tüm önemli işlerinizi kaydedin.
- Basın Kazan + R açmak için Çalıştırmak pencere.
- komutu yazın mdsched.exe içinde Çalıştırmak pencere.
- PC'yi yeniden başlatın.
- Yeniden başlattıktan sonra, temel bir tarama yapın veya 'ileri'gibi seçenekler'Test karışımı' veya 'geçiş sayısı'.
- Basın F10 testi başlatmak için.
Bunlar hala geçici düzeltmeler.
3] Sürücü güncellemelerini kontrol edin
Güncel olmayan sürücüler bellek sızıntılarına neden olur. Tüm sürücüleri güncel tutun:
- Basın Kazan + R ve aç Çalıştırmak pencere. Tür devmgmt.msc ve Enter'a basın. seni şuraya götürecek Aygıt Yöneticisi.
- Güncel olmayan sürücüleri kontrol edin ve hepsini güncelleyin.
- Güncellemeler için kaçırmış olabilirsiniz, Windows Update'e bakın.
Bu basitti.
4] Performansı optimize edin
Windows'u performansa göre ayarlamak, bellek sızıntılarını durdurmak için işlemci zamanlaması ve bellek kullanımı dahil her şeyi yönetir. Bu adımları takip et:
- ' üzerine sağ tıklayınbu bilgisayar' ve ' öğesini seçinileri' ayarları sol bölmede.
- Altında 'ileri' sekmesi, git'Verim', bunu takiben 'Ayarlar'.
- Kontrol 'En iyi performans için ayarla' ve tıklayın TAMAM MI.
- Yeniden başlatın ve sorunun çözülüp çözülmediğini kontrol edin.
Bu basit çözüm işe yaramadıysa, sonraki çözümü deneyin.
5] Başlangıçta Çalışan Programları Devre Dışı Bırak
Zahmetli programları devre dışı bırakmak, bellek sızıntısı sorunundan kurtulmanın tek yoludur. Görev Yöneticisi'ne gidin ve sorun yaratan programı devre dışı bırakın. Hangi programların sorun yarattığını bilmiyorsanız, şunu yapın:
- Git 'Görev Yöneticisi'.
- Git 'Başlamak'.
- Varsayılan olarak çalıştırmanız gerekmeyen başlangıç programlarını devre dışı bırakın.
6] Sabit Sürücüyü Birleştir
Windows 10 bunu sizin için otomatik olarak yapsa da, performansı optimize etmek için zaman zaman sabit sürücüleri birleştirmeniz gerekebilir:
- Git 'bu bilgisayar' veya 'Benim bilgisayarım'.
- Sistem sabit sürücüsüne sağ tıklayın (genellikle C: sürücüsü).
- Git 'Araçlar'altında'Özellikleri' ve ' öğesini seçinoptimize et'.
- Birleştirilecek sürücüyü seçin ve 'analiz et'.
Yeni parçalanmadan sonra bilgisayarınızı yeniden başlatın.
7] Kapatma sırasında ClearPage Dosyası
Şimdi karmaşıklaşıyor - ama endişelenme. Her kapatmada Sayfa Dosyasını nasıl temizleyeceğiniz aşağıda açıklanmıştır:
- Tür regedit Kayıt Defteri Düzenleyicisini başlatmak için Arama'da.
- Bu yolu girin:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerBellek Yönetimi
- değerini değiştir ClearPageFileAtShutDown '1'.
- Değişiklikleri kaydedin ve cihazı yeniden başlatın.
Bu yapmalı. Kapatma işleminizin biraz daha zaman alacağını unutmayın.
9] Süper Getirmeyi Devre Dışı Bırak
Bu Windows Hizmeti, önyükleme süresini en aza indirerek performansı optimize eder. Windows'un RAM kullanımını yönetmesini sağlar. Superfetch'i devre dışı bıraktıktan sonraki hayat uygun değil, ancak gerekirse yapın. En azından sorunu izole etmek için bunu tek başına deneyin:
- Arama Hizmetler.msc ve Hizmetler Yöneticisine gidin.
- Aramak 'süper getirme' ve gitmek için sağ tıklayın'Özellikleri'.
- ' öğesini seçinDur'.
- Ayrıca 'devre dışı bırak' açılır menüden hizmet.
- Bilgisayarı yeniden başlatın ve performansın iyileşip iyileşmediğini kontrol edin.
Bu işe yaramazsa Superfetch'i etkinleştirin.
10] Kötü amaçlı yazılım olup olmadığını kontrol edin
Kötü amaçlı yazılımları taramak ve ortadan kaldırmak için üçüncü taraf bir virüsten koruma yazılımı veya Windows 10'un şirket içi Windows Defender'ı kullanın. Bellek sızıntısının nedeni haline gelmemesi için antivirüsün işletim sisteminizi destekleyecek şekilde güncellendiğinden emin olun.
Bellek sızıntılarını bulmak veya önlemek için ihtiyaç duyabileceğiniz her çözüm tam burada. MSDN ve Microsoft'ta bellek sızıntıları hakkında daha fazla bilgi edinebilirsiniz.