Bellek Sızıntısı Dedektörü Çalışma Prensibi
Nasıl bellek sızıntısı dedektörü gerçekten işe yarıyor mu? Genel olarak, temel kavramlar nelerdir? Dil bunu açıklamak olarak C alabilir.
CEVAP
Dedektörleri çalışma sızıntı farklı şekillerde bir çift vardır. Ayırma sırasında daha fazla bilgi izleyebilir ve performans ile ilgili değil bu olanlar malloc
free
Uygulama değiştirebilirsiniz. Bu dmalloc
nasıl çalıştığını benzer. Genel olarak, malloc
'ed ama değil free
'd sızdırılmış. herhangi bir adres
Temel uygulama aslında oldukça basit. Sadece her tahsisat bir arama tablosu ve satır sayısını korumak ve serbest bırakılan girdisini kaldırın. Program bittiğinde tüm sızdırılmış bellek listeleyebilirsiniz. Zor kısmı tahsisat serbest olması gerekirken belirliyor. Bu aynı adres için birden çok işaretçi olduğunda daha da zordur.
Uygulamada, muhtemelen daha tek satır numarasını istersin, daha ziyade bir kayıp tahsis ve yığın izleme.
Başka bir yaklaşım bütün bir sanal makine adreslerine ve belleğe başvuruyor ve ilgili muhasebe işlerini takip etmek uygulayan valgrind nasıl işliyor. Valgrind yaklaşım yasak okur ya da yazar gibi de söyleyebiliyor olarak çok daha pahalı, ama aynı zamanda çok daha etkili bellek hataları diğer türleri hakkında.
Valgrind aslında temel talimatları aletleri ve belirli bir bellek adresi fazla başvuru var zaman izleyebilirsiniz. Adres atamalarını takip ederek bunu yapabilirsiniz, ve çok bellek parçası kaybolmuş, ama tam olarak değil sadece o anlatabilirne zamankayıp oldu.
C new
delete
operatörler ekler çünkü işler biraz daha zor kaçak dedektörleri her iki tür için yapar. Teknik olarak new
malloc
Daha bellek tamamen farklı bir kaynak olabilir. Ancak uygulamada pek çok gerçek C uygulamaları sadece malloc
new
uygulamak ya da bir seçenek, alternatif bir yaklaşım yerine malloc
kullanmak için kullanın.
C gibi yüksek seviyeli diller alternatif std::vector
std::list
gibi bellek ayırma daha yüksek seviyeli yolu, sahip olma eğilimindedir. Temel sızıntı dedektörü potansiyel olarak birçok ayırmalarını üst düzey modları ayrı ayrı rapor eder. Tüm konteyner kayboldu demekten daha az yararlı.
Bellek sızıntısı C ...
Nasıl bellek kullanımı için c çalışma ...
Bir bellek izleme Java çöp toplama / s...
Web görünümü bellek sızıntısı...
Java Standart bellek sızıntısı tuzakla...