Paano Makita ang isang Memory Leak sa Ubuntu



Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema

Mayroong maraming mga kadahilanan na maaaring maganap ang isang pagtagas sa memorya sa Ubuntu, ngunit sa kabutihang palad, halata kapag nangyari ito. Ang code ng Buggy ay madalas na ang pinakamalaking dahilan, dahil ang mga programmer ay maaaring walang pagkakataon na suriin upang matiyak na ang memorya na hindi na kinakailangan ay inilabas. Kung nag-i-install ka ng hindi matatag na mga pakete o pag-compile ng code mula sa mapagkukunan, maaari kang makitungo sa mga paglabas ng memorya para sa kadahilanang ito. Marahil ay masisimulan mong mapansin ang mga ito dahil nagsimulang magreklamo ang mga package ng application ng software tungkol sa pagiging wala sa memorya kapag mayroon kang higit sa sapat na naka-install na pisikal na RAM.



Kung nag-aalala ka tungkol sa isang pagtulo ng memorya, subukang mag-type ng libreng paulit-ulit sa isang terminal. Kung bigla mong nasimulan na makita ang paggamit ng RAM na mabilis na lumalaki, napansin mo na ang isang butas ng memorya. Kung makakatanggap ka ba ng isang error na nagbabasa ng isang bagay tulad ng bash: Walang sapat na Memorya habang ginagawa ito at wala kang anuman kundi isang terminal o kahit isang virtual console lang ang bukas, kung gayon halos hindi ka mapag-aalinlanganang nakikipag-usap sa isa. Ang ilang mga pagtagas sa memorya ay maaaring maging isang subtler, ngunit ang Ubuntu at iba't ibang mga tool sa tampok na spin-off at mga pakete na makakatulong sa iyo na makita ang mga ito.



Ang pagtuklas ng Memory Leaks sa Ubuntu

Dahil ang mga tool na ginamit para sa pagtuklas ng mga paglabas ng memorya ay pangunahing batay sa paligid ng CLI prompt, hindi mahalaga kung aling bersyon ng Ubuntu ang pinapatakbo mo ang mga ito. Dapat itong gumana nang maayos sa loob ng isang Unity terminal sa regular na Ubuntu, mula sa isang virtual console sa Ubuntu Server, mula sa isang lxterm sa Lubuntu, isang Konsole sa Kubuntu o kahit sa loob ng Xfce sa Xubuntu. Subukang magsagawa ng isang simpleng gawain tulad ng mga sudo-s at i-type ang iyong password upang magsimula.



Makakakuha ka nito ng isang root shell kung gumanap nang tama, ngunit maaaring maging sanhi ng isang error sa memorya kung nagtatrabaho ka sa isang tagas na napakalayo na. Kung talagang na-access mo ang isang root shell, pagkatapos ay subukang mag-type ng echo 3> / proc / sys / m / drop_cache, itulak ang enter key at pagkatapos ay i-type ang exit. Subukang tumakbo nang libre o libre -m muli upang makita kung nakatulong iyon upang palabasin ang memorya.

Ang ilang mga programmer ay nagtatalo na walang point sa pagpuwersa sa Kernel na i-drop ang mga cache nito, dahil dapat silang mapula at sa gayon ay makuha muli sa lalong madaling kailangan ng karagdagang memorya ng pisikal. Gayunpaman, habang ang puwersa na pag-flush ng mga cache na ito ay makakasakit sa pagganap ng system na tandaan na ito ay isang pagsubok lamang. Sa sandaling nai-reboot mo ang system, dapat muling tipunin ng Linux Kernel ang mga cache ng memorya sa paraang una sila.

Ang ilang mga tao ay nagmungkahi ng pagdaragdag ng pag-sync ng linya; sudo echo 3> / proc / sys / vm / drop_cache sa isang script na patuloy na tumatakbo ang cron, ngunit tinalo nito ang layunin ng memorya ng cache sa una. Ang libreng memorya mismo ay hindi nagamit na RAM, at nangangahulugan iyon na ang data ay kailangang mai-load mula sa mas mabagalelectromekanikal o mga NAND storage device. Hindi mahalaga kung gaano kabilis ang mga aparatong ito, hindi sila kasing bilis ng RAM, na nangangahulugang habang dapat mong ayusin ang mga paglabas ng memorya, hindi mo talaga dapat pakialaman ang cache system kapag naitakda mo na ito sa pinakamainam na setting.



Kung napagpasyahan mong mayroon kang pare-pareho na tagas ng memorya na nangyayari pana-panahon habang ginagamit ang iyong makina at hindi ito maaaring mapakipot nang partikular, ngunit mayroon ka pa ring access sa CLI, pagkatapos ay subukang patakbuhin ang nangungunang utos. Ito ay dapat magbigay sa iyo ng isang listahan ng mga tumatakbo na proseso.

Dapat bang bigyan ka ng Ubuntu ng isang hindi pangkaraniwang error tungkol sa tuktok at subukang mag-isyu ng tuktok ng busybox sa halip upang ma-access ang isang mas simpleng bersyon ng program na ito. Kapag mayroon kang isang listahan, tingnan ang% MEM o katulad na haligi upang makita kung aling mga application ang itinalaga ang pinaka memorya. Habang mapapansin mo ang PID at naglalabas ng isang command ng pagpatay sa eksaktong bilang ng PID, pipilitin lamang nitong isara ang application. Ang memorya na ginagamit nila ay maaaring hindi pa rin mailabas pagkatapos mong gawin ito, kahit na syempre sulit itong kunan ng larawan.

Kung nakakita ka ng isang application na gumagamit ng isang malaking halaga ng memorya, itulak ang q upang tumigil at pagkatapos ay subukang pumatay #### gamit ang numero ng PID mula sa nakaraang screen. Ang mga proseso ng system ay hindi dapat pumatay sa ganitong paraan, o dapat ding may anumang bagay na hindi ka naka-save. Pag-isipan ito nang katulad sa pagpatay sa isang bagay sa listahan ng gawain ng Ctrl + Alt + Del, na maaari mo ring magamit para sa parehong proseso.

Kapag nakakita ka ng isang programa na ito ay patuloy na nangyayari, maaari mo itong mai-configure upang maiwasan ang pag-uugali sa hinaharap. Ang bawat indibidwal na programa, siyempre, ay mangangailangan ng iba't ibang recourse, na lampas sa gawain ng pagtuklas lamang ng mga paglabas ng memorya.

Kung hindi ka dapat lamang mag-troubleshoot ng mga application, ngunit talagang gumagana rin sa code pagkatapos ay may ilang iba pang mga recourses na mayroon ka. Nag-aalok sa iyo ang Ubuntu at ang mga derivatives nito ng mga gawain sa membarrier, memusage at memusagestat C para sa pagprograma.

Gumamit lamang ng man membarrier, man memusage o man memusagestat upang matingnan ang mga pahina ng Manu-manong Programmer ng Linux sa mga mahahalagang gawain na ito. Kung may mga pag-upgrade sa mga hinaharap na bersyon ng mga aklatan habang lumalabas ang mga bagong bersyon ng Ubuntu, palaging ibabalangkas dito ang mga pagbabago.

Kung kailangan mo ng nilalamang grapiko, pagkatapos ay nag-aalok ang memusagestat ng pagpipilian upang i-save ang isang grapikong representasyon ng paggamit ng memorya sa isang PNG file. Ginagawa itong isang kaakit-akit na tampok para sa mga may-akda ng mga kagamitan pati na rin, dahil maaari itong magamit upang gumawa ng mga application na regular na suriin para sa mga paglabas ng memorya.

Maaari mo ring hilingin na mag-install ng memprof, na isang tool para sa pag-prof sa paggamit ng memorya upang matulungan kang makahanap ng mga paglabas ng memorya. Bumubuo ito ng isang profile tungkol sa kung magkano ang memorya ng bawat pag-andar sa isang program na iyong sinusulat na inilalaan. Maaari rin itong i-scan ang mayroon nang memorya upang makahanap ng mga bloke, na inilaan, ngunit hindi na nagtatampok ng tunay na mga sanggunian. Ginagawa ito sa pamamagitan ng paunang paglo-load ng isang library upang ma-override ang mga tampok sa paglalaan ng memorya ng standard na C.

Kung balak mong gamitin ito, tiyakin na alisin ang isama na linya ng memprof mula sa simula ng iyong code bago ito ilabas. Ginagamit ito upang matiyak na wala kang mga paglabas, ngunit hindi ito dapat maging isang pagiging maaasahan kung ibabalot mo ang iyong code at ilabas ito sa isang lalagyan.

Basahin ang 4 na minuto