Så här upptäcker du en minnesläcka i Ubuntu

Det finns flera anledningar att minnesläckage kan uppstå på Ubuntu, men lyckligtvis är det uppenbart när de inträffar. Buggy-kod är ofta den största orsaken, eftersom programmerare kanske inte har haft möjlighet att kontrollera att minnet som inte längre behövs blir släppt. Om du har installerat instabila paket eller sammanställer kod från källan kan du kanske hantera minnesläckor av den anledningen. Du kommer förmodligen att börja märka dem eftersom programvarupaket börjar klaga på att vara ledigt när du har mer än tillräckligt med fysisk RAM installerad.

Om du är orolig för en minnesläcka, försök att skriva in flera gånger i en terminal. Om du plötsligt börjar se RAM-användningen växer snabbt, har du redan upptäckt en minnesläcka. Skulle du få ett fel som läser något som bash: Inte tillräckligt minne medan du gör det här och du har inget annat än en terminal eller bara en virtuell konsol öppen, så är du nästan otvivelaktigt hanterad av en. Vissa minnesläckor kan vara lite subtilare, men Ubuntu och det är olika spin-offs-verktyg och -paket som kan hjälpa dig att upptäcka dessa.

Detektering av minneläckor i Ubuntu

Eftersom verktygen som används för att upptäcka minnesläckor huvudsakligen är baserade på CLI-prompten spelar ingen roll vilken version av Ubuntu du kör dem på. Dessa ska fungera bra inuti en Unity-terminal i vanlig Ubuntu, från en virtuell konsol i Ubuntu Server, från en lxterm i Lubuntu, en Konsole i Kubuntu eller till och med inuti Xfce i Xubuntu. Prova att utföra en enkel uppgift som sudo-s och skriv ditt lösenord för att börja.

Detta borde få dig ett rotskal om det utförts korrekt, men kan orsaka ett minnesfel om du arbetar med en läcka som redan har gått för långt. Om du verkligen kan komma åt ett rotskal försöker du skriva echo 3> / proc / sys / m / drop_caches, tryck på Enter-tangenten och skriv sedan Avsluta. Prova att springa gratis eller gratis -m igen för att se om det har hjälpt till att släppa minnet.

Vissa programmerare hävdar att det inte finns någon mening att tvinga kärnan att släppa ut sina cacher eftersom de ska spolas och sålunda återvinnas så snart ytterligare fysiskt minne behövs. Men medan kraftspolning kommer dessa cacher att skada systemets prestanda, tänk på att detta bara är ett test. När du har startat om systemet borde Linux-kärnan återigen montera minnescyklerna som de var i första hand.

Några personer har föreslagit att lägga till radsynkronisering. sudo echo 3> / proc / sys / vm / drop_caches till ett skript som cron körs konsekvent, men det här försvinner syftet med minneskachning i första hand. Fritt minne i sig är bara oanvänd RAM, och det betyder att data måste laddas från mycket långsammare elektromekaniska

Om Ubuntu ger dig ett ovanligt fel på toppen, försök du att utfärda uppgiften till upptaget i stället för att få tillgång till en ännu enklare version av det här programmet. När du har en lista, kolla på% MEM eller liknande kolumn för att se vilka applikationer som tilldelas mest minne. Medan du kan notera PID och utfärda ett döds-kommando till exakt antal PID, kommer det bara att tvinga programmet att stängas. Minnet som de använder kan fortfarande inte släppas efter att du har gjort det, men det är naturligtvis värt ett skott.

PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här

Om du hittar ett program som använder mycket minne, tryck på q för att avsluta och försök sedan döda #### med PID-numret från föregående skärm. Systemprocesser ska inte dödas på detta sätt, och inte heller något som du har olagrat arbete på. Tänk på det på samma sätt som att döda något med Ctrl + Alt + Del-uppgiftslistan, som du också kan använda för samma process.

När du har hittat ett program som detta konsekvent händer med, kan du konfigurera det för att förhindra beteendet i framtiden. Varje enskilt program kommer naturligtvis att behöva ett annat tillvägagångssätt, vilket är bortom uppgiften att bara detektera minnesläckor.

Om du inte bara felsöker program, men också faktiskt arbetar med kod så finns det några andra rekurser du har. Ubuntu och dess derivat erbjuder dig membarrier, memusage och memusagestat C rutiner för programmering.

Använd bara membarrier, man memusage eller man memusagestat för att se Linux Programmeringsmanualerna på dessa viktiga rutiner. Om det finns uppgraderingar i kommande versioner av biblioteken när nya versioner av Ubuntu kommer ut, kommer ändringarna alltid att beskrivas här.

Om du behöver grafiskt innehåll erbjuder memusagestat även möjligheten att spara en grafisk representation av minnesanvändning till en PNG-fil. Detta gör det också till en attraktiv egenskap för upphovsmän till verktyg, eftersom det kan användas för att göra program som regelbundet kontrollerar minnesläckor.

Du kan också vilja installera memprof, vilket är ett verktyg för profilering av minnesanvändning för att hjälpa dig att hitta minnesläckor. Det genererar en profil om hur mycket minne varje funktion i ett program du skriver allokerar. Det kan också skanna befintligt minne för att hitta block, som har tilldelats, men innehåller inte längre äkta referenser. Det gör detta genom att förinstallera ett bibliotek för att åsidosätta standard C-bibliotekets minnesallokeringsfunktioner.

Om du planerar att använda detta, se till att ta bort den inkluderade memprof-raden från början av koden innan du släpper den. Detta används för att se till att du inte har några läckor, men det bör inte bli ett beroende om du paketerar din kod och släpper den i ett förråd.

PRO TIPS: Om problemet är med din dator eller en bärbar dator, bör du försöka använda Reimage Plus-programvaran som kan skanna förvaret och ersätta korrupta och saknade filer. Detta fungerar i de flesta fall där problemet uppstått på grund av systemkorruption. Du kan ladda ner Reimage Plus genom att klicka här

Facebook Twitter Google Plus Pinterest