birçok işlemler ve bir (veya daha fazla) olan bir sistem (Ubuntu) sahip olduğu bir bellek sızıntısı bulmak nasıl. Sızıntıya sahip süreci bulmak için iyi bir yol var mı? Sürecin bir kısmı JVM'dir, bazıları değildir. Bazıları yetiştirilmekte olup bazıları açık kaynaklıdır.i bu işlem sızıntı bellek
cevap
Zor görev. Normalde Valgrind gibi bir hata ayıklayıcı/bellek profilerini almayı ve programların bir tanesini sonra çalıştırmayı öneririm. Yakında veya daha sonra sızıntı yapan programı bulabilir ve ona söyleverebilir ya da kendiniz düzeltebilirsiniz.
top
komutunu çalıştırabilirsiniz (etkileşimli olmayan şekilde çalıştırmak için top -b -n 1
yazın). Aşağıdaki sütunlara bakmak, bellek sızıntısı olan uygulamaları görmek için:
- RPRVT - ikamet özel adres alanı boyutu
- RSHRD - ikamet paylaşılan adres alanı boyutu
- rsize - ikamet bellek boyutu
- VPRVT - özel adres alanı boyutu
- VSIZE - toplam bellek boyutu suggeseted gibi
Ben bu bilgiler bir çıkış vermez top için geçmesi her ne komut satırı argümanları ancak bu çalışıyordum deneyin. Ben PID KULLANICI PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND 'gibi sth olsun. Gerekli çıktıyı nasıl alacağınıza dair herhangi bir öneriniz var mı? – niko
, gitmek için yol valgrind olduğunu. Belleğin kullanımı da dahil olmak üzere, uygulamanızın çalışan performansının birçok yönünü kontrol eden bir uzman.
Valgrind aracılığıyla uygulamayı çalıştıran size aynı bellek serbest eğer malloc ile ayrılmış bellek serbest bırakmak için unutursanız doğrulamak sağlayacak iki kez vb
Belirli bir programın bellek sızıntılarını nasıl izleyeceğini sormuyordu. Ama nasıl tanımlanır, hangi süreçlerden sızan olanlar vardı. – akauppi
üste ek olarak, Sistem Monitörü (System kullanabilirsiniz - Yönetim - Sistem Monitörü'nü ve ardından İşlemler sekmesini seçin). Görünüm - Tüm İşlemler'i seçin, Düzenle - Tercihler'e gidin ve Sanal Bellek sütununu etkinleştirin. Sıralama ya bu sütuna göre veya Hafıza sütununda
GNOME kesinlikle buna sahip! – thanikkal
tarafından uzun süre boyunca programı sızıntıları, üst pratik olmayabilir eğer. Önemli miktarda bellek sızmasının ne kadar sürdüğüne bağlı olarak "ps aux" sonucunu her X saniyede bir dosyaya ekleyen basit bir kabuk komut dosyası yazabilirim. gibi bir şey: Eğer tümdengelim bunu yapamıyorsan
while true
do
echo "---------------------------------" >> /tmp/mem_usage
date >> /tmp/mem_usage
ps aux >> /tmp/mem_usage
sleep 60
done
, desen ayıklama Sinyal Flare düşünün: on kat bir işlemle ayrılan bellek miktarını artırın. Sonra programınızı çalıştırın.
sızan bellek miktarı aynı ise
, bu süreç sızıntı kaynağı değildi; İşlemi geri yükleyin ve bir sonraki işleme aynı değişikliği yapın.Eğer sorumludur sürecini vurmak
, kendi bellek sızıntısı atlama ("sinyal parlama") boyutunu göreceksiniz. Bu işlemdeki ayrı ifadelerin ayırma boyutunu seçici olarak artırarak daha da daraltabilirsiniz. Daha iyi bir alternatif top olarakBen Htop kullanımını öneriyoruz.
- 1. Görüntü adaptörü sızıntı bellek
- 2. Hedef işlem için sızıntı aracını yapılandıramadı
- 3. Java JNI C++ işleminde sızıntı
- 4. Bu neden bir bellek sızdırıyor
- 5. IOS UIWebView Sızıntı
- 6. Python çoklu işlem - Bir işlem yapıldığında bellek nasıl bırakılır?
- 7. Çoklu işlem kullanırken bellek sınırlamalarının üstesinden gelin
- 8. Takviyeli iplik Sızıntı C++
- 9. Bellek altında bir işlem tarafından kullanılan bellek os x
- 10. Bu işlem, varlık grubu
- 11. "Bu işlem, ASP.NET MVC2
- 12. Yüksek bellek kullanımı yalnızca çok işlem yaparken
- 13. Bellek eşleştirmeli I/O vs Port eşlemi I/O
- 14. Etkinlik voleybol dinleyicileri kullanırken sızıntı
- 15. Bu işlem işlevi neden çalışmıyor?
- 16. Bu işlem neden ActiveRecord'da çalışmıyor?
- 17. XCode 4 Sızıntı Araçlarını Çalıştırma
- 18. (iphone) UIImageView setImage: sızıntı mı?
- 19. Bir Sızıntı sızıntısını nasıl teşhis edebilirim?
- 20. Bu bellek uyarısından nasıl kaçınmalıyım?
- 21. Neden mal belleği dönüş değeri işlem bellek haritasında değil?
- 22. Plist Serileştirme Özellikli Bellek Sızıntısı
- 23. asla Bu i yürütmesini komut
- 24. Bu Haskell programı neden bu kadar çok bellek ayırıyor?
- 25. JSON biçimi masaya bir PowerShell komutu ile işlem adını ve işlem bellek kullanımını almaya çalışıyorum
- 26. Önemli: Bu işlem bir çalışma ağacında çalıştırılmalıdır
- 27. WatchService neden bu kadar çok işlem yapıyor?
- 28. Bu fork() ifadeleriyle kaç işlem oluşturulur?
- 29. skpaymentqueue canmakepayments bellek sızıntısı denetimleri
- 30. Azure Sql veritabanlarında sızıntı bağlantısını algıla
[valgrind] (http://valgrind.org/) – nickleefly