Çalıştığım test durumlarında belleği artan bir uygulama var. Bu açıkçası, benim uygulamamın bellek sızdıracağına inanmamı sağladı. Bu yüzden başvurumda valgündüm ve şaşırtıcı bir şekilde sızıntı tespit etmedim.Özel kirli bellek sızan hafızanın bir göstergesi olabilir mi?
benim işlemin bellek sızdırıyor neden emin değilim, bu yüzden benim sürecin ait smaps dosyasına ve aşağıdaki i
08426000-42f56000 rwxp 00000000 00:00 0 [heap]
Size: 961728 kB
Rss: 960252 kB
Pss: 960252 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 960252 kB
Referenced: 960252 kB
Anonymous: 960252 kB
AnonHugePages: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
i biraz araştırma yaptım bu numaraları hakkında mantıklı ilginç hale getirmek için ne buldum eğer baktı Private_Dirty bellek hakkında, makalelerin çoğu, bu maliyetin henüz pahalı olmadığı için henüz boşaltılamayan belleğin olduğunu gösterir.
Bu, bunların yalnızca uygulama tarafından serbest bırakılan ancak yine de OS tarafından tutulan bir bellek olduğunu belirtmektedir.
Bazılarınız private_dirty'yi daha iyi anlamama yardımcı olabilir mi? Bu benim sahip olduğum bellek sızıntısının bir göstergesi olabilir mi?
Teşekkür
hafıza temizleme aşamasından sonra ve rutin çıkmadan önce küçük olsun mu? Hafızanın tutulmasına neden olan test senaryolarına göre bir şeye tutunmuş gibi geliyor. Paylaşılan işaretçiler mi kullanıyorsunuz yoksa doğrudan bellek yönetimiyle mi çalışıyorsunuz? – Jiminion
Burada özel-kirli olan bir açıklama var [burada] (http://stackoverflow.com/a/17596928/2096401): temelde belleğiniz işleminizin "kullanıldı" (yazıldığı) var, böylece kaydedilmesi gerekecek başka bir süreç için yer açmak için değiştirildi. Kendi içinde, bellek sızdırıyor olduğunuzu göstermez. – TripeHound
Belki de çok sayıda küçük boyutlu bellek ayırıyorsunuz ve sonra ayrılıyorsunuz. Çok fazla tahmin edemiyorum ama bellek parçalanması ile ilgili bir şey var mı? –