Slik oppdager du en minnelekkasje i Ubuntu
Det er flere grunner til at en minnelekkasje kan oppstå på Ubuntu, men heldigvis er det åpenbart når de oppstår. Buggy kode er ofte den største grunnen, siden programmerere ikke har hatt muligheten til å sjekke for at minnet som ikke lenger trengs, blir utgitt. Hvis du har installert ustabile pakker eller kompilerer kode fra kilde, kan det hende du har problemer med lekkasjer av denne grunn. Du vil sannsynligvis begynne å merke dem fordi programvareprogrampakker begynner å klage på å være ute av minne når du har mer enn nok fysisk RAM installert.
Hvis du er bekymret for en minnelekkasje, kan du prøve å skrive gratis gjentatte ganger inn i en terminal. Hvis du plutselig begynner å se RAM-bruk, vokser raskt, har du allerede oppdaget et minnelekkasje. Skulle du motta en feil som leser noe som bash: Ikke nok minne mens du gjør dette, og du har ingenting annet enn en terminal eller bare en virtuell konsoll åpen, så er du nesten utvilsomt håndterer en. Noen minnelekkasjer kan være litt subtilere, men Ubuntu, og det er forskjellige spin-offs-verktøy og -pakker som kan hjelpe deg med å oppdage disse.
Registrere minnelekkasjer i Ubuntu
Siden verktøyene som brukes for å oppdage minnelekkasjer, primært er basert på CLI-spørringen, spiller det ingen rolle hvilken versjon av Ubuntu du kjører dem på. Disse skal fungere fint inne i en Unity-terminal i vanlig Ubuntu, fra en virtuell konsoll i Ubuntu Server, fra en lxterm i Lubuntu, en Konsole i Kubuntu eller innvendig av Xfce i Xubuntu. Prøv å utføre en enkel oppgave som sudo-s og skriv inn passordet ditt for å begynne.
Dette bør gi deg et rotskall hvis det utføres riktig, men kan føre til en minnefeil hvis du jobber med en lekkasje som allerede er gått for langt. Hvis du faktisk har tilgang til et rotskall, prøv å skrive ekko 3> / proc / sys / m / drop_caches, trykk enter-tasten og skriv inn exit. Prøv å kjøre gratis eller gratis -m igjen for å se om det har bidratt til å frigjøre minne.
Noen programmerere hevder at det ikke er noe poeng i å tvinge kjernen til å slippe ut sine caches, siden de skal spyles og dermed gjenvinnes så snart ekstra fysisk minne er nødvendig. Imidlertid, mens kraftspyling disse cachene vil skade systemytelsen, husk at dette bare er en test. Når du har startet systemet på nytt, bør Linux-kjernen igjen samle minnekachene slik de var i utgangspunktet.
Noen få personer har foreslått å legge til linjensynkronisering; sudo echo 3> / proc / sys / vm / drop_caches til et script som cron kjører konsekvent, men dette slår formålet med minnekachering i utgangspunktet. Gratis minne er bare ubrukt RAM, og det betyr at data må lastes fra mye langsommere elektromekanisk
Skulle Ubuntu gi deg en uvanlig feil om toppen, prøv å utstede opptaksboksen i stedet for å få tilgang til en enda enklere versjon av dette programmet. Når du har en liste, kan du se på% MEM eller lignende kolonne for å se hvilke applikasjoner som tildeles mest minne. Mens du kunne merke PID og utstede en kommando for å drepe det eksakte nummeret til PID, vil dette bare tvinge programmet til å lukke. Minnet de bruker, kan fortsatt ikke løses etter at du har gjort dette, selv om det selvsagt er verdt et skudd.
PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke herHvis du finner et program som bruker mye minne, trykker du på q for å avslutte og forsøker deretter å drepe #### med PID-nummeret fra forrige skjermbilde. Systemprosesser bør ikke drepes på denne måten, og heller ikke noe som du har ubehandlet arbeid på. Tenk på dette på samme måte som å drepe noe med Ctrl + Alt + Del-oppgavelisten, som du også kan bruke for samme prosess.
Når du har funnet et program som dette hele tiden skjer, kan du konfigurere det for å forhindre atferden i fremtiden. Hvert enkelt program vil selvfølgelig trenge et annet tiltak, som er utover oppgaven med å bare oppdage minnelekkasjer.
Skulle du ikke bare feilsøke programmer, men også faktisk jobbe med kode, så er det noen andre ressurser du har. Ubuntu og dets derivater tilbyr deg membarrier, memusage og memusagestat C rutiner for programmering.
Bare bruk mannens membarrier, man memusage eller man memusagestat for å se Linux Programmer's Manual sider på disse viktige rutinene. Hvis det er oppgraderinger i fremtidige versjoner av bibliotekene etter hvert som nye versjoner av Ubuntu kommer ut, blir endringene alltid skissert her.
Hvis du trenger grafisk innhold, tilbyr memusagestat selv muligheten til å lagre en grafisk representasjon av minnebruk til en PNG-fil. Dette gjør det til en attraktiv funksjon for forfattere av verktøy også, siden det kan brukes til å lage applikasjoner som regelmessig sjekker om minnelekkasjer.
Du kan også ønske å installere memprof, som er et verktøy for profilering av minnebruk for å hjelpe deg med å finne minnelekkasjer. Det genererer en profil angående hvor mye minne hver funksjon i et program du skriver tildeler. Det kan også skanne eksisterende minne for å finne blokker, som er blitt tildelt, men ikke lenger med ekte referanser. Det gjør dette ved forhåndsinnlasting av et bibliotek for å overstyre standard C-bibliotekets minnefordelingsfunksjoner.
Hvis du planlegger å bruke dette, må du sørge for at du fjerner den inkluderte memprof-linjen fra begynnelsen av koden før du slipper den. Dette brukes til å sikre at du ikke har noen lekkasjer, men det bør ikke bli en avhengighet hvis du pakker inn koden og slipper den i et lager.
PRO TIPS: Hvis problemet er med datamaskinen eller en bærbar PC / notatbok, bør du prøve å bruke Reimage Plus-programvaren som kan skanne arkiver og erstatte skadede og manglende filer. Dette fungerer i de fleste tilfeller der problemet er oppstått på grunn av systemkorrupsjon. Du kan laste ned Reimage Plus ved å klikke her