Kuidas tuvastada Ubuntu mäluleket



Proovige Meie Instrumenti Probleemide Kõrvaldamiseks

Ubuntu mälulekke tekkimiseks võib olla mitu põhjust, kuid õnneks on see ilmne, kui need tekivad. Lollakood on sageli suurim põhjus, kuna programmeerijatel ei pruugi olla olnud võimalust kontrollida, kas enam vajalik mälu vabastatakse. Kui olete installeerinud ebastabiilseid pakette või kompileerinud koodi lähtekoodist, võite sel põhjusel tegeleda mälulekkidega. Tõenäoliselt hakkate neid märkama, sest tarkvararakenduste paketid hakkavad kurtma mälupuuduse pärast, kui teil on installitud rohkem kui piisavalt füüsilist RAM-i.



Kui tunnete muret mälulekke pärast, proovige terminali sisestada korduvalt tasuta. Kui hakkate ootamatult nägema, kuidas RAM-i kasutamine kiiresti kasvab, olete juba tuvastanud mälulekke. Kui peaksite saama vea, mis loeb midagi sellist nagu bash: selle tegemise ajal pole piisavalt mälu ja teil pole midagi muud peale terminali või isegi lihtsalt avatud virtuaalse konsooli, tegelete sellega peaaegu vaieldamatult. Mõned mälulekked võivad olla veidi peenemad, kuid Ubuntu ja erinevate spin-offide funktsioonide tööriistad ja paketid aitavad neid tuvastada.



Mälulekete tuvastamine Ubuntus

Kuna mälulekete tuvastamiseks kasutatavad tööriistad põhinevad peamiselt CLI-viipal, pole vahet, millises Ubuntu versioonis neid käivitate. Need peaksid tavalises Ubuntu Unity-terminalis hästi töötama, Ubuntu Serveri virtuaalsest konsoolist, Lubuntu lxtermist, Kubuntu Konsolest või isegi Xubuntus Xfce'ist. Proovige teha lihtne toiming, näiteks sudo -s, ja sisestage alustamiseks oma parool.



See peaks õigesti sooritades saama juurkesta, kuid võib põhjustada mäluvea, kui töötate juba liiga kaugele läinud lekkega. Kui teil on tõepoolest juurdepääs juurkestale, proovige tippida echo 3> / proc / sys / m / drop_cache, vajutage sisestusklahvi ja tippige seejärel exit. Proovige uuesti käivitada tasuta või free -m, et näha, kas see on aidanud mälu vabastada.

Mõni programmeerija väidab, et pole mõtet sundida tuuma oma vahemäludest loobuma, sest need tuleks loputada ja nõnda taastada kohe, kui on vaja täiendavat füüsilist mälu. Kuigi nende vahemälude loputamine jõu kahjustab süsteemi jõudlust, pidage meeles, et see on lihtsalt test. Kui olete süsteemi taaskäivitanud, peaks Linuxi kernel uuesti mälumälud kokku panema nii, nagu nad olid alguses.

Mõned inimesed on soovitanud lisada liini sünkroonimine; sudo echo 3> / proc / sys / vm / drop_cache skriptile, mida cron töötab järjekindlalt, kuid see alistab esmalt mälu vahemällu salvestamise eesmärgi. Vaba mälu ise on lihtsalt kasutamata RAM ja see tähendab, et andmeid tuleb laadida palju aeglasemaltelektromehaaniline või NAND-mäluseadmed. Sõltumata sellest, kui kiiresti need seadmed on, pole nad nii kiired kui RAM, mis tähendab, et kuigi peaksite parandama mälulekkeid, ei tohiks te vahemälusüsteemi tegelikult muuta, kui olete selle optimaalseks seadeks seadnud.



Kui olete otsustanud, et teil on tõepoolest järjepidev mäluleke, mis juhtub teie masina kasutamise ajal perioodiliselt ja seda ei saa konkreetselt kitsendada, kuid teil on endiselt juurdepääs CLI-le, proovige käivitada ülemine käsk. See peaks andma teile käimasolevate protsesside loendi.

Kui Ubuntu peaks teile andma ebatavalise vea topiga, proovige selle asemel välja anda busybox top, et pääseda selle programmi veelgi lihtsamale versioonile. Kui loend on olemas, vaadake veergu% MEM või muud sarnast, et näha, millistele rakendustele on kõige rohkem mälu määratud. Kuigi võiksite PID-i märkida ja anda PID-i täpsele numbrile kill käsu, sunnib see lihtsalt rakenduse sulgema. Nende kasutatav mälu ei pruugi pärast seda siiski vabaneda, ehkki see on muidugi väärt võtet.

Kui leiate rakenduse, mis kasutab suurt mälumahtu, vajutage sulgemiseks q ja proovige tappa #### eelmise kuva PID-numbriga. Süsteemiprotsesse ei tohiks niimoodi tappa, samuti ei tohiks töötada midagi, kuhu olete salvestamata. Mõelge sellele sarnaselt millegi tapmisega ülesandeloendi Ctrl + Alt + Del abil, mida saate kasutada ka sellesama protsessi jaoks.

Kui olete leidnud programmi, millega see pidevalt toimub, saate selle konfigureerida nii, et see tulevikus käitumist takistaks. Loomulikult vajab iga üksik programm erinevat võimalust, mis ületab pelgalt mälulekete tuvastamise ülesande.

Kui te ei peaks pelgalt rakenduste tõrkeotsingut tegema, vaid tegelema ka koodiga, on teil mõned muud võimalused. Ubuntu ja selle derivaadid pakuvad teile programmeerimiseks rutiine, memusage ja memusagestat C.

Nendes olulistes rutiinides saate Linuxi programmeerija käsiraamatu lehtede vaatamiseks lihtsalt kasutada man membarrier, man memusage või man memusagestat. Kui raamatukogude tulevastes versioonides on täiendusi, kui Ubuntu uued versioonid välja tulevad, siis on muudatused alati siin välja toodud.

Kui vajate graafilist sisu, pakub memusagestat isegi võimalust salvestada mälukasutuse graafiline esitus PNG-faili. See muudab selle atraktiivseks funktsiooniks ka utiliitide autoritele, kuna seda saab kasutada rakenduste loomiseks, mis regulaarselt kontrollivad mälulekkeid.

Samuti võite soovida installida memprof, mis on mälukasutuse profileerimise tööriist, et aidata teil mälulekkeid leida. See loob profiili selle kohta, kui palju mälu eraldab iga teie kirjutatava programmi funktsioon. Samuti saab see skannida olemasolevat mälu, et leida plokid, mis on eraldatud, kuid millel pole enam ehtsaid viiteid. Seda tehakse teegi eellaadimisega, et tühistada standardse C teegi mälu jaotamise funktsioonid.

Kui kavatsete seda kasutada, eemaldage enne koodi vabastamist kindlasti kaasatav rida memprof oma koodi algusest. Seda kasutatakse veendumaks, et teil pole lekkeid, kuid see ei tohiks muutuda sõltuvuseks, kui pakendate koodi ja vabastate selle hoidlas.

4 minutit loetud