Ubuntu'da Bellek Sızıntısı Nasıl Tespit Edilir



Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin

Ubuntu'da bir bellek sızıntısının meydana gelmesinin birkaç nedeni vardır, ancak neyse ki, ne zaman meydana geldikleri açıktır. Buggy kodu genellikle en büyük nedendir, çünkü programcılar artık ihtiyaç duyulmayan belleğin serbest bırakıldığından emin olmak için kontrol etme fırsatı bulamamış olabilirler. Kararsız paketler yüklüyorsanız veya kaynaktan kod derliyorsanız, bu nedenle bellek sızıntılarıyla uğraşıyor olabilirsiniz. Muhtemelen bunları fark etmeye başlayacaksınız çünkü yazılım uygulama paketleri, yeterince yüklü fiziksel RAM'iniz olduğunda belleğin yetersizliğinden şikayet etmeye başlar.



Bellek sızıntısı konusunda endişeleriniz varsa, bir terminale tekrar tekrar ücretsiz yazmayı deneyin. Birdenbire RAM kullanımının hızla arttığını görmeye başlarsanız, zaten bir bellek sızıntısı tespit etmişsinizdir. Bash gibi bir şey okuyan bir hata alırsanız: Bunu yaparken yeterli Bellek yok ve bir terminalden veya açık bir sanal konsoldan başka bir şeyiniz yoksa, o zaman neredeyse hiç şüphesiz biriyle uğraşıyorsunuz demektir. Bazı bellek sızıntıları biraz daha ince olabilir, ancak Ubuntu ve çeşitli yan ürünler, bunları tespit etmenize yardımcı olabilecek araçlar ve paketler içerir.



Ubuntu'da Bellek Sızıntılarını Algılama

Bellek sızıntılarını tespit etmek için kullanılan araçlar öncelikle CLI komut istemine dayandığından, bunları hangi Ubuntu sürümünde çalıştırdığınız önemli değildir. Bunlar, normal Ubuntu'daki bir Unity terminalinin içinde, Ubuntu Sunucusundaki sanal bir konsoldan, Lubuntu'daki bir lxterm'den, Kubuntu'daki bir Konsole'den ve hatta Xubuntu'da Xfce'nin içinde iyi çalışmalıdır. Sudo -s gibi basit bir görev yapmayı deneyin ve başlamak için şifrenizi yazın.



Bu, doğru şekilde yapılırsa size bir kök kabuk vermelidir, ancak çok ileri gitmiş bir sızıntıyla çalışıyorsanız bellek hatasına neden olabilir. Bir kök kabuğa gerçekten erişebiliyorsanız, echo 3> / proc / sys / m / drop_caches yazmayı deneyin, enter tuşuna basın ve ardından exit yazın. Belleğin serbest bırakılmasına yardımcı olup olmadığını görmek için ücretsiz veya -m'yi tekrar çalıştırmayı deneyin.

Bazı programcılar, Çekirdeği önbelleklerini çıkarmaya zorlamanın bir anlamı olmadığını, çünkü bunların yıkanması ve dolayısıyla ek fiziksel belleğe ihtiyaç duyulduğunda geri alınması gerektiğini savunuyorlar. Ancak, bu önbellekleri zorla yıkamak sistem performansına zarar verirken, bunun yalnızca bir test olduğunu unutmayın. Sistemi yeniden başlattığınızda, Linux Çekirdeği bir kez daha bellek önbelleklerini ilk etapta oldukları gibi bir araya getirmelidir.

Birkaç kişi hat senkronizasyonunun eklenmesini önerdi; sudo echo 3> / proc / sys / vm / drop_caches, cron'un tutarlı bir şekilde çalışan bir betiğe dönüştürülmesidir, ancak bu, ilk başta bellek önbelleğe alma amacını ortadan kaldırır. Boş belleğin kendisi yalnızca kullanılmayan RAM'dir ve bu, verilerin çok daha yavaş bir yerden yüklenmesi gerektiği anlamına gelir.elektromekanik veya NAND depolama cihazları. Bu cihazlar ne kadar hızlı olursa olsun, RAM kadar hızlı değildirler, yani bellek sızıntılarını gidermeniz gerekirken, en uygun ayara getirdikten sonra önbellek sistemine gerçekten müdahale etmemelisiniz.



Makinenizi kullanırken gerçekten de düzenli aralıklarla meydana gelen tutarlı bir bellek sızıntınız olduğuna karar verdiyseniz ve özellikle daraltılamıyorsa, ancak yine de CLI erişiminiz varsa, en üst komutu çalıştırmayı deneyin. Bu size çalışan işlemlerin bir listesini vermelidir.

Ubuntu size top hakkında alışılmadık bir hata verirse, bu programın daha da basit bir sürümüne erişmek için bunun yerine busybox top vermeyi deneyin. Bir listeye sahip olduğunuzda, en çok belleğe hangi uygulamaların atandığını görmek için% MEM veya benzer sütuna bakın. PID'yi not edebilir ve PID'nin tam sayısına bir sonlandırma komutu verebilirken, bu yalnızca uygulamayı kapanmaya zorlar. Tabii ki denemeye değer olsa da, kullandıkları hafıza bunu yaptıktan sonra hala serbest bırakılmayabilir.

Çok miktarda bellek kullanan bir uygulama bulursanız, çıkmak için q düğmesine basın ve ardından önceki ekranda PID numarasıyla #### öldürmeyi deneyin. Sistem süreçleri bu şekilde öldürülmemeli, kaydedilmemiş herhangi bir şey çalışmamalıdır. Bunu, aynı işlem için de kullanabileceğiniz Ctrl + Alt + Del görev listesiyle bir şeyi öldürmeye benzer şekilde düşünün.

Bunun sürekli olarak başına geldiği bir program bulduğunuzda, gelecekte bu davranışı önlemek için onu yapılandırabilirsiniz. Her bir programın, elbette, yalnızca bellek sızıntılarını tespit etme görevinin ötesindeki farklı bir başvuru kaynağına ihtiyacı olacaktır.

Yalnızca sorun giderme uygulamaları değil, aynı zamanda kodla da çalışıyor olmanız durumunda, sahip olduğunuz birkaç başka kaynak vardır. Ubuntu ve türevleri, programlama için membran taşıyıcı, memusage ve memusagestat C rutinleri sunar.

Bu önemli rutinler hakkında Linux Programcısının Kılavuzu sayfalarını görüntülemek için basitçe insan membranı, insan hafızası veya man memusagestat kullanın. Ubuntu'nun yeni sürümleri çıktıkça kütüphanelerin gelecekteki sürümlerinde yükseltmeler varsa, değişiklikler her zaman burada ana hatlarıyla belirtilecektir.

Grafik içeriğe ihtiyacınız varsa, memusagestat bellek kullanımının grafik gösterimini bir PNG dosyasına kaydetme seçeneği de sunar. Bellek sızıntılarını düzenli olarak kontrol eden uygulamalar yapmak için kullanılabildiğinden, bu onu yardımcı program yazarları için de çekici bir özellik haline getirir.

Ayrıca, bellek sızıntılarını bulmanızda size yardımcı olmak için bellek kullanımını profilleme aracı olan memprof'u kurmak isteyebilirsiniz. Yazmakta olduğunuz bir programdaki her bir işlevin ne kadar bellek ayırdığına ilişkin bir profil oluşturur. Ayrılmış olan ancak artık gerçek referanslar içermeyen blokları bulmak için mevcut belleği de tarayabilir. Bunu, standart C kitaplığının bellek ayırma özelliklerini geçersiz kılmak için bir kitaplığı önceden yükleyerek yapar.

Bunu kullanmayı planlıyorsanız, yayınlamadan önce kodunuzun başından memprof dahil satırını kaldırdığınızdan emin olun. Bu, herhangi bir sızıntı olmadığından emin olmak için kullanılır, ancak kodunuzu paketleyip bir havuzda yayınlarsanız bu bir bağımlılık haline gelmemelidir.

4 dakika okundu