Sådan opdages en hukommelselækage i Ubuntu
Der er flere grunde til, at der kan opstå hukommelsesleje på Ubuntu, men heldigvis er det indlysende, når de opstår. Buggy kode er ofte den største årsag, da programmerere måske ikke har haft mulighed for at kontrollere, at hukommelsen, der ikke længere er nødvendig, bliver frigivet. Hvis du har installeret ustabile pakker eller kompilerer kode fra kilde, kan du muligvis beskæftige dig med hukommelseslekkage af denne grund. Du vil sikkert begynde at bemærke dem, fordi softwareprogrampakker begynder at klage over at være ude af hukommelse, når du har mere end nok fysisk RAM installeret.
Hvis du er bekymret for et hukommelseslækage, skal du prøve at skrive gentagne gange til en terminal. Hvis du pludselig begynder at se RAM-brug, vokser hurtigt, så har du allerede registreret en hukommelsesleje. Skulle du modtage en fejl, der læser noget som bash: Ikke nok hukommelse mens du gør dette, og du har intet andet end en terminal eller endda bare en virtuel konsol åben, så er du næsten utvivlsomt at beskæftige sig med en. Nogle hukommelseslekkelser kan være lidt subtilere, men Ubuntu og det er forskellige spin-offs-værktøjer og -pakker, der kan hjælpe dig med at opdage disse.
Opdagelse af hukommelselækager i Ubuntu
Da de værktøjer, der bruges til at registrere hukommelseslækage primært er baseret på CLI-prompten, er det ligegyldigt, hvilken version af Ubuntu du kører dem på. Disse skal fungere fint inde i en Unity-terminal i almindelig Ubuntu, fra en virtuel konsol i Ubuntu Server, fra en lxterm i Lubuntu, en Konsole i Kubuntu eller endda inde i Xfce i Xubuntu. Prøv at udføre en simpel opgave som sudo-s og skriv dit kodeord for at begynde.
Dette bør give dig en rodskal, hvis den udføres korrekt, men kan forårsage en hukommelsesfejl, hvis du arbejder med en lækage, der allerede er gået for langt. Hvis du faktisk kan få adgang til en root shell, så prøv at skrive ekko 3> / proc / sys / m / drop_caches, tryk på enter-tasten og skriv derefter exit. Prøv at køre gratis eller gratis -m igen for at se, om det har bidraget til at frigive hukommelsen.
Nogle programmører argumenterer for, at der ikke er noget punkt i at tvinge kernen til at slippe ud sine caches, da de skal skylles og dermed genvindes, så snart der er behov for yderligere fysisk hukommelse. Imidlertid, mens kraft spyling disse caches vil skade system ydeevne huske på, at dette blot er en test. Når du har genstartet systemet, skal Linux-kernen igen samle hukommelseskabetterne som de var i første omgang.
Et par personer har foreslået at tilføje linjensynkronisering; sudo echo 3> / proc / sys / vm / drop_caches til et script, som cron løber konsekvent, men dette besejrer formålet med hukommelse caching i første omgang. Fri hukommelse er blot ubrugt RAM, og det betyder, at data skal læses fra meget langsommere elektromekaniske
Skulle Ubuntu give dig en usædvanlig fejl om toppen, så prøv at udstede busybox top i stedet for at få adgang til en endnu enklere version af dette program. Når du har en liste, skal du se på% MEM eller lignende kolonne for at se, hvilke applikationer der er tildelt mest hukommelse. Mens du kunne notere PID og udstede en kill-kommando til det præcise antal af PID, vil det kun tvinge applikationen til at lukke. Hukommelsen, de bruger, kan stadig ikke frigives, når du har gjort det, selvom det selvfølgelig er et skød værd.
PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke herHvis du finder et program, der bruger en stor mængde hukommelse, skal du trykke på q for at afslutte og derefter prøve at dræbe #### med PID-nummeret fra det foregående skærmbillede. Systemprocesser bør ikke dræbes på denne måde, og heller ikke noget, som du har ubeskyttet arbejde i. Tænk på det på samme måde som at dræbe noget med Ctrl + Alt + Del-opgavelisten, som du også kan bruge til den samme proces.
Når du har fundet et program, som dette hele tiden foregår, kan du konfigurere det for at forhindre adfærd i fremtiden. Hvert enkelt program vil selvfølgelig have brug for en anden anvendelse, som er uden for opgaven at blot registrere hukommelseslekkasjer.
Skulle du ikke bare være fejlfinding af applikationer, men også faktisk arbejde med kode så er der et par andre rekurser du har. Ubuntu og dets derivater tilbyder dig membarrier, memusage og memusagestat C rutiner til programmering.
Brug simpelthen manens membarrier, mand memusage eller man memusagestat for at se Linux Programmer's Manual sider om disse vigtige rutiner. Hvis der er opgraderinger i fremtidige versioner af bibliotekerne, når nye versioner af Ubuntu kommer ud, bliver ændringerne altid skitseret her.
Hvis du har brug for grafisk indhold, tilbyder memusagestat selv mulighed for at gemme en grafisk repræsentation af hukommelsesbrug til en PNG-fil. Dette gør det også til en attraktiv funktion for forfattere af forsyningsselskaber, da det kan bruges til at lave programmer, der regelmæssigt tjekker for hukommelseslekkage.
Du kan også ønske at installere memprof, som er et værktøj til profilering af hukommelsesforbrug for at hjælpe dig med at finde hukommelseslekkage. Det genererer en profil om, hvor meget hukommelse hver funktion i et program du skriver tildeler. Det kan også scanne eksisterende hukommelse for at finde blokke, som er blevet tildelt, men ikke længere med ægte referencer. Det gør det ved at forudindlæse et bibliotek for at tilsidesætte standard C-bibliotekets hukommelsesallokeringsfunktioner.
Hvis du planlægger at bruge dette, skal du sørge for at fjerne den inkluderede memprof-linje fra begyndelsen af din kode, inden du frigiver den. Dette bruges til at sikre, at du ikke har lækager, men det bør ikke blive en afhængighed, hvis du pakker din kode og frigiver den i et lager.
PRO TIP: Hvis problemet er med din computer eller en bærbar computer / notesbog, skal du prøve at bruge Reimage Plus-softwaren, som kan scanne lagrene og udskifte korrupte og manglende filer. Dette virker i de fleste tilfælde, hvor problemet er opstået på grund af systemkorruption. Du kan downloade Reimage Plus ved at klikke her