Kuinka tunnistaa muistivuoto Ubuntussa



Kokeile Instrumenttia Ongelmien Poistamiseksi

On useita syitä muistivuotojen esiintymiseen Ubuntussa, mutta onneksi se on ilmeistä, kun niitä esiintyy. Buginen koodi on usein suurin syy, koska ohjelmoijilla ei ehkä ole ollut mahdollisuutta tarkistaa, ettei enää tarvita muistia vapautuisi. Jos olet asentanut epävakaita paketteja tai koonnut koodia lähteestä, saatat olla tekemisissä muistivuotojen kanssa tästä syystä. Alat todennäköisesti huomata niitä, koska ohjelmistosovelluspaketit alkavat valittaa muistin loppumisesta, kun fyysistä RAM-muistia on asennettu yli tarpeeksi.



Jos olet huolestunut muistivuodosta, yritä kirjoittaa ilmaiseksi toistuvasti päätelaitteeseen. Jos yhtäkkiä huomaat RAM-muistin käytön kasvavan nopeasti, olet jo havainnut muistivuodon. Jos saat virheilmoituksen, joka lukee jotain bash: Ei tarpeeksi muistia tätä tehdessäsi ja sinulla ei ole muuta kuin päätelaite tai edes vain virtuaalikonsoli auki, olet melkein kiistatta käsittelemässä sitä. Jotkut muistivuodot voivat olla hiukan hienovaraisempia, mutta Ubuntu ja sen erilaiset spin-off-ominaisuudet sisältävät työkalut ja paketit, jotka voivat auttaa sinua havaitsemaan nämä.



Muistivuotojen havaitseminen Ubuntussa

Koska muistivuotojen havaitsemiseen käytetyt työkalut perustuvat ensisijaisesti CLI-kehotteeseen, ei ole väliä missä Ubuntun versiossa käytät niitä. Näiden pitäisi toimia hyvin Unity-päätelaitteen sisällä tavallisessa Ubuntussa, virtuaalikonsolista Ubuntu-palvelimessa, Lubxun lxtermistä, Konsolesta Kubuntussa tai jopa Xfcesta Xubuntussa. Yritä suorittaa yksinkertainen tehtävä, kuten sudo -s, ja kirjoita salasanasi aluksi.



Tämän pitäisi saada juurikuori, jos se suoritetaan oikein, mutta se voi aiheuttaa muistivirheen, jos työskentelet jo liian pitkälle menevän vuodon kanssa. Jos pystyt todella käyttämään juurikuorta, yritä kirjoittaa echo 3> / proc / sys / m / drop_cache, paina Enter-näppäintä ja kirjoita exit. Yritä suorittaa ilmainen tai free -m uudelleen nähdäksesi, onko se auttanut vapauttamaan muistia.

Jotkut ohjelmoijat väittävät, ettei ole mitään järkeä pakottaa ydintä luovuttamaan välimuistinsa, koska ne tulisi huuhdella ja palauttaa siten heti, kun tarvitaan lisää fyysistä muistia. Vaikka näiden välimuistien huuhtelu voima vahingoittaa järjestelmän suorituskykyä, pidä mielessä, että tämä on vain testi. Kun olet käynnistänyt järjestelmän uudelleen, Linux-ytimen tulisi jälleen koota muistivälimuistit samalla tavalla kuin ne olivat.

Muutamat ihmiset ovat ehdottaneet linjasynkronoinnin lisäämistä; sudo echo 3> / proc / sys / vm / drop_cache komentosarjaan, jota cron suorittaa johdonmukaisesti, mutta tämä hylkää ensisijaisesti muistivälimuistin tarkoituksen. Vapaa muisti itsessään on vain käyttämätöntä RAM-muistia, mikä tarkoittaa, että tietoja on ladattava paljon hitaamminsähkömekaaninen tai NAND-tallennuslaitteet. Riippumatta siitä kuinka nopeasti nämä laitteet ovat, ne eivät ole yhtä nopeita kuin RAM, mikä tarkoittaa, että vaikka sinun on korjattava muistivuodot, sinun ei pidä itse asiassa muuttaa välimuistijärjestelmää, kun olet asettanut sen optimaaliseen asetukseen.



Jos olet päättänyt, että sinulla on jatkuvasti tasainen muistivuoto, joka tapahtuu säännöllisesti koneen käytön aikana, eikä sitä voida kaventaa erikseen, mutta sinulla on silti CLI-käyttöoikeus, yritä suorittaa ylempi komento. Tämän pitäisi antaa sinulle luettelo käynnissä olevista prosesseista.

Jos Ubuntu antaa sinulle epätavallisen virheen alkuun, yritä sen sijaan antaa busybox top, jotta pääset vielä yksinkertaisempaan versioon tästä ohjelmasta. Kun sinulla on luettelo, katso% MEM tai vastaava -sarakkeesta, mihin sovelluksiin on varattu eniten muistia. Vaikka voisit huomata PID: n ja antaa tappokomennon PID: n tarkalle numerolle, tämä vain pakottaa sovelluksen sulkeutumaan. Niiden käyttämää muistia ei ehkä vieläkään vapauteta, kun teet tämän, vaikka se on tietenkin laukauksen arvoinen.

Jos löydät sovelluksen, joka käyttää paljon muistia, sulje painamalla q ja yritä sitten tappaa #### edellisen näytön PID-numerolla. Järjestelmäprosesseja ei pidä tappaa tällä tavalla, eikä mitään, mikä sinulla on tallentamattomana, pitäisi toimia. Ajattele tätä samalla tavalla kuin tapat jotain Ctrl + Alt + Del -tehtäväluettelolla, jota voit käyttää myös samassa prosessissa.

Kun olet löytänyt ohjelman, jolle näin tapahtuu jatkuvasti, voit määrittää sen estämään käyttäytymisen tulevaisuudessa. Jokainen yksittäinen ohjelma tarvitsee tietysti erilaisen turvautumisen, joka ei ole pelkästään muistivuotojen havaitseminen.

Jos sinun ei tarvitse olla vain sovellusten vianmääritys, vaan myös työskennellä koodin kanssa, sinulla on muutamia muita resursseja. Ubuntu ja sen johdannaiset tarjoavat sinulle ohjelmointirutiinit, muistikirjat ja memusagestat C -rutiinit.

Voit tarkastella Linux-ohjelmoijan käsikirjan sivuja näillä tärkeillä rutiineilla yksinkertaisesti man membarrier, man memusage tai man memusagestat avulla. Jos kirjastojen tulevissa versioissa on päivityksiä, kun Ubuntun uudet versiot tulevat ulos, muutokset kuvataan aina tässä.

Jos tarvitset graafista sisältöä, memusagestat tarjoaa jopa mahdollisuuden tallentaa graafinen esitys muistin käytöstä PNG-tiedostoon. Tämä tekee siitä houkuttelevan ominaisuuden myös apuohjelmien kirjoittajille, koska sitä voidaan käyttää sovellusten tekemiseen, jotka tarkistavat säännöllisesti muistivuodot.

Voit myös halutessasi asentaa memprofin, joka on profilointityökalu muistin käytön helpottamiseksi muistivuotojen löytämisessä. Se luo profiilin siitä, kuinka paljon muistia kukin kirjoittamasi ohjelman toiminto jakaa. Se voi myös skannata olemassa olevan muistin löytääksesi lohkot, jotka on jaettu, mutta joissa ei enää ole aitoja viitteitä. Se tekee tämän lataamalla kirjaston etukäteen C-kirjaston vakiomuotoisten muistinjakotoimintojen ohittamiseksi.

Jos aiot käyttää tätä, poista sisällyttävä memprof-rivi koodisi alusta ennen sen vapauttamista. Tätä käytetään varmistamaan, ettei sinulla ole vuotoja, mutta siitä ei pitäisi tulla riippuvuutta, jos pakkaat koodisi ja luovutat sen arkistoon.

4 minuuttia luettu