Hogyan lehet kimutatni a memóriaszivárgást az Ubuntuban



Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére

Számos oka lehet annak, hogy memóriaszivárgás léphet fel az Ubuntuban, de szerencsére nyilvánvaló, amikor előfordulnak. A hibás kód gyakran a legnagyobb ok, mivel lehet, hogy a programozóknak nem volt alkalmuk ellenőrizni, hogy felszabadulnak-e a már nem szükséges memóriák. Ha instabil csomagokat telepített vagy kódokat fordított forrásból, akkor emiatt memóriaszivárgásokkal küzdhet. Valószínűleg kezdi észrevenni őket, mert a szoftveralkalmazás-csomagok panaszkodni kezdenek a memóriahiány miatt, ha több mint elegendő fizikai RAM van telepítve.



Ha aggódik a memória szivárgása miatt, próbálkozzon ismételten ingyen beírni egy terminálba. Ha hirtelen kezdi látni a RAM használatának gyors növekedését, akkor már észlelt egy memóriaszivárgást. Ha olyan hibát kap, amely a bash-t írja: Nincs elég memória, miközben ezt csinálod, és nincs más, csak terminálod vagy akár csak egy virtuális konzolod van nyitva, akkor szinte kétségtelenül foglalkozol vele. Egyes memóriaszivárgások kissé finomabbak lehetnek, de az Ubuntu és a különféle spin-off funkciók és csomagok segítenek ezek felderítésében.



Memóriaszivárgások észlelése az Ubuntuban

Mivel a memóriaszivárgások észleléséhez használt eszközök elsősorban a CLI parancssorán alapulnak, nem mindegy, hogy az Ubuntu melyik verzióján futtatja őket. Ezeknek jól kell működniük a normál Ubuntu Unity terminálján belül, az Ubuntu Server virtuális konzoljától, a Lubuntu lxtermétől, a Kubuntu konzoljától vagy az Xfuntu Xfce-jétől. Próbáljon meg végrehajtani egy egyszerű feladatot, mint például a sudo -s, és a kezdéshez írja be a jelszavát.



Ennek megfelelően kell végrehajtania egy gyökérhéjat, de memóriahibát okozhat, ha olyan szivárgással dolgozik, amely már túl messzire ment. Ha valóban hozzáférhet egy gyökérhéjhoz, akkor írja be az echo 3> / proc / sys / m / drop_cache gépelést, nyomja meg az Enter billentyűt, majd írja be az exit parancsot. Próbálja újra futtatni ingyen vagy free -m, hogy lássa, segített-e ez a memória felszabadításában.

Egyes programozók azt állítják, hogy nincs értelme arra kényszeríteni a kernelt, hogy dobja ki a gyorsítótárakat, mivel ezeket ki kell öblíteni és így vissza kell szerezni, amint további fizikai memória szükséges. Bár ezek a gyorsítótárak öblítésével az erő károsítja a rendszer teljesítményét, ne feledje, hogy ez csupán teszt. Miután újraindította a rendszert, a Linux kernelnek ismét úgy kell összeszerelnie a memória gyorsítótárakat, mint amilyenek voltak.

Néhány ember javasolta a vonal szinkronizálásának hozzáadását; sudo echo 3> / proc / sys / vm / drop_cache egy szkriptre, amelyet a cron következetesen futtat, de ez elsősorban a memória gyorsítótárazásának célját veti fel. Maga a szabad memória csupán fel nem használt RAM, és ez azt jelenti, hogy az adatokat sokkal lassabban kell betöltenielektromechanikus vagy NAND tárolóeszközök. Nem számít, milyen gyorsak ezek az eszközök, nem olyan gyorsak, mint a RAM, ami azt jelenti, hogy bár javítania kell a memóriaszivárgásokat, valójában nem szabad beavatkoznia a gyorsítótár-rendszerrel, miután az optimális beállításra került.



Ha úgy döntött, hogy valóban állandó memóriaszivárgása van, amely rendszeresen előfordul a gép használata közben, és amelyet nem lehet szűkíteni, de még mindig rendelkezik CLI hozzáféréssel, akkor próbálja meg futtatni a legfelső parancsot. Ez megadja a futó folyamatok listáját.

Ha az Ubuntu szokatlan hibát ad a tetejével kapcsolatban, akkor próbálja ki inkább a busybox top kiadását, hogy hozzáférhessen a program még egyszerűbb verziójához. Ha elkészült egy lista, nézze meg a% MEM vagy hasonló oszlopot, és nézze meg, mely alkalmazásokhoz van rendelve a legtöbb memória. Bár megjegyezheti a PID-t, és kill parancsot adhat ki a PID pontos számához, ez csak az alkalmazás bezárására kényszeríti. Előfordulhat, hogy az általuk használt memória még mindig nem szabadul fel, miután ezt megtette, bár természetesen megér egy lövést.

Ha olyan alkalmazást talál, amely nagy memóriát használ, nyomja meg a q gombot a kilépéshez, majd próbálja meg megölni a #### parancsot az előző képernyő PID számával. A rendszerfolyamatokat nem szabad ily módon megölni, és nem szabad, hogy bármi, amiben nincs mentés, működjön. Gondoljon erre hasonlóan, mint megölni valamit a Ctrl + Alt + Del feladatlistával, amelyet ugyanahhoz a folyamathoz használhat.

Ha megtalált egy olyan programot, amellyel ez folyamatosan történik, akkor konfigurálhatja úgy, hogy megakadályozza a jövőbeni viselkedést. Természetesen minden egyes programnak más és más igényre van szüksége, amely túlmutat a memóriaszivárgások felderítésén.

Ha nem csak az alkalmazások hibaelhárításával foglalkozik, hanem a kóddal is dolgozik, akkor van néhány más lehetősége. Az Ubuntu és származékai a programozáshoz kínálják a membarrier, memusage és memusagestat C rutinokat.

Egyszerűen használja a man membarrier, man memusage vagy man memusagestat elemeket a Linux programozói kézikönyv oldalainak megtekintéséhez ezeken a fontos rutinokon. Ha a könyvtárak jövőbeni verzióiban frissítéseket hajtanak végre, amikor az Ubuntu új verziói megjelennek, akkor a változásokat mindig itt vázoljuk.

Ha grafikus tartalomra van szüksége, akkor a memusagestat még lehetőséget kínál arra is, hogy a memória grafikus ábrázolását PNG fájlba mentse. Ez vonzó tulajdonsággá teszi a segédprogramok szerzői számára is, mivel felhasználható olyan alkalmazások készítésére, amelyek rendszeresen ellenőrzik a memóriaszivárgást.

Érdemes telepíteni a memprof-ot is, amely a memóriahasználat profilozásának eszköze, hogy segítsen megtalálni a memóriaszivárgásokat. Profilt generál arról, hogy az általad írt program egyes funkciói mennyi memóriát osztanak ki. Szkennelheti a meglévő memóriát is, hogy megtalálja azokat a blokkokat, amelyeket kiosztottak, de már nem tartalmaznak eredeti hivatkozásokat. Ezt egy könyvtár előzetes betöltésével teszi meg, hogy felülbírálja a szabványos C könyvtár memóriafoglalási funkcióit.

Ha ezt kívánja használni, akkor a kiadás előtt feltétlenül távolítsa el az include memprof sort a kód elejéről. Ezt arra használják, hogy megbizonyosodjon arról, hogy nincs-e szivárgás, de nem válhat függőséggé, ha becsomagolja a kódot és kiadja egy tárban.

4 perc olvasás