Atmintis

Kaip rasti ir išspręsti atminties nutekėjimą sistemoje „Windows 10“

Kaip rasti ir išspręsti atminties nutekėjimą sistemoje „Windows 10“

A Atminties nutekėjimas yra neteisingas kompiuterio programos išteklių išdėstymas dėl netinkamo atminties paskirstymo. Tai atsitinka, kai nenaudojama RAM vieta lieka neišleista. Atminties nutekėjimas neturi būti painiojamas su erdvės nutekėjimu, kuris reiškia programą, naudojančią daugiau RAM nei būtina. Teigiama, kad atminties nutekėjimas sistemoje „Windows 10/8/7“ įvyko, kai atmintis tiesiog nepasiekiama, nors ir nenaudojama.

Atminties nutekėjimas sistemoje „Windows 10“

Prieš pradėdami turėtumėte žinoti, kad atminties nutekėjimas yra programinės įrangos problema, kurią reikia derinti - pavyzdžiui, „Java“, „JavaScript“, „C / C ++“, „Windows“ ir kt. Fiziškai pakeisti RAM ar kietąjį diską nereikia.

Kodėl tai blogai

Akivaizdu, kad atminties nutekėjimas yra blogas, nes tai yra klaida, sistemos trūkumas. Bet išsiaiškinkime, kaip tiksliai tai veikia sistemą:

  1. Kadangi atmintis neatlaisvina net ir tada, kai ji nenaudojama, ji išsenka.
  2. Išeikvojus atmintį senėja programinė įranga.
  3. Dėl sumažėjusios laisvos atminties padidėja atsako laikas ir blogas sistemos veikimas.
  4. Nepatikrintas atminties nutekėjimas ilgainiui gali sukelti programos gedimą.

Norint nustatyti atminties nutekėjimą, programuotojas turi turėti prieigą prie programos šaltinio kodo.

Nutekėjimo vieta

Norėdami išspręsti problemą, pirmiausia turime ją identifikuoti. Pagrindiniai atminties nuotėkio nustatymo veiksmai yra šie:

  1. Patvirtinimas: Ar nėra nuotėkio.
  2. Surandama branduolio režimo atminties nuotėkis: Nuotėkio, kurį sukelia branduolio režimo tvarkyklės komponentas, nustatymas.
  3. Vartotojo režimo atminties nuotėkio radimas: Nutekėjimo, kurį sukelia vartotojo režimo tvarkyklė ar programa, nustatymas.

Atminties paskirstymas

Yra skirtingi režimai, kuriais programos paskirsto RAM. Jei po naudojimo vietos nebus atlaisvinta, atmintis nutekės, neatsižvelgiant į paskirstymo būdą. Kai kurie įprasti paskirstymo modeliai yra šie:

  1. „HealAlloc“ funkcija skirta kaupti atmintį. C / C ++ vykdymo laiko ekvivalentai yra malloc ir nauji.
  2. „VirtualAlloc“ funkcija tiesioginiam paskirstymui iš OS.
  3. „Kernel32“ API, skirtos laikyti programos branduolio atmintį. Pavyzdys: CreateFile, CreateThread.
  4. „User32“ API ir „Gdi32“ API.

Užkirsti kelią atminties nutekėjimui

Mes visi žinome, kad prevencija yra geriau nei gydymas, todėl pateikiame keletą būdų, kaip išvengti atminties nutekėjimo.

Stebėjimo įpročiai

Turite stebėti, ar atskiros programos ir programos nenaudoja RAM. Galite pereiti į „Windows“ užduočių tvarkyklę paspausdami CTRL + SHIFT + ESC ir pridėkite stulpelius, pvz., Rankenos, Vartotojo objektai, GDI objektai ir kt.

Tai padės lengvai stebėti išteklių naudojimą.

Perskaityk: Kokie yra kompiuterio atminties tipai?

„Microsoft“ įrankiai, skirti diagnozuoti atminties nutekėjimą

Įvairūs įrankiai diagnozuoja atminties nutekėjimą įvairiems paskirstymo režimams:

  1. „Application Verifier“ diagnozuoja krūvos nuotėkius.
  2. UMDH („Windows“ derinimo įrankių komponentas) diagnozuoja atskirų procesų nuotėkius, stebėdamas krūvos atminties paskirstymą.
  3. „Trace Capture“ nuodugniai išanalizuoti RAM naudojimą.
  4. „Xperf“ taip pat seka krūvos paskirstymo modelius.
  5. CRT Debug Heap ne tik seka kaupų paskirstymą, bet ir leidžia koduoti, kad būtų sumažintas nutekėjimas.
  6. „JavaScript“ atminties nuotėkio detektorius derina atminties nutekėjimus koduose.

Naudojimo patarimai

  1. Naudokite branduolį RANKENAs ir kiti išmanieji „Win32“ išteklių ir kaupo paskirstymo rodikliai.
  2. Gaukite ATL bibliotekos branduolio paskirstymo automatinio išteklių valdymo klases. C ++ standartas turi auto_ptr krūvos paskirstymui.
  3. Įtraukite COM sąsajos rodykles į „išmaniuosius rodykles“ naudodami _com_ptr_t arba _bstr_t arba _variantas_t.
  4. Stebėkite .NET kodas nenormaliam atminties naudojimui.
  5. Venkite kelių funkcijų išėjimo kelių, kad funkcijų pabaigoje paskirstymai būtų atlaisvinti iš kintamųjų daugumoje blokų.
  6. Vietines išimtis naudokite tik atlaisvinę visus paskirstymus _galiausiai bloke. Jei norite naudoti C ++ išimtis, apvyniokite visas krūvas ir tvarkykite paskirstymą į išmaniuosius rodykles.
  7. Visada skambinkite „PropVariantClear“ funkciją prieš iš naujo inicializuodami arba išmesdami objektą PROPVARIANT.

„Windows“ atminties nutekėjimo trikčių šalinimas

Kaip ir įvairūs būdai užkirsti kelią atminties nutekėjimui, yra ir įvairūs būdai, kaip sustabdyti atminties nutekėjimą. Bet prieš pradėdami nepamirškite pirmiausia sukurti sistemos atkūrimo tašką.

1] Uždarykite procesus ir paleiskite iš naujo.

Jei matote, kad nereikalingas procesas užima per daug RAM, procesą galite užbaigti užduočių tvarkytuvėje. Turėsite iš naujo paleisti įrenginį, kad atlaisvintą vietą būtų galima naudoti kitiems procesams. Be „Restart“ atminties nutekėjimo problema nebus išspręsta. Vienas konkretus procesas, kuriame yra klaidų, sulėtinančių kompiuterį, yra „Runtime Broker“. Pabandykite, ar vien to išjungimas veikia.

2] Atminties diagnostikos įrankiai

Norėdami pasiekti integruotą „Windows“ atminties diagnostikos įrankį:

  1. Išsaugokite visus svarbius darbus.
  2. Paspauskite Win + R atidaryti Bėk langas.
  3. Įveskite komandą mdsched.exe viduje konors Bėk langas.
  4. Perkraukite kompiuterį.
  5. Paleidus iš naujo, atlikite pagrindinį nuskaitymą arba eikite įIšplėstinė„variantai kaip“Bandomasis mišinys„arba“Leidimų skaičius".
  6. Paspauskite F10 pradėti testą.

Tai vis dar laikini pataisymai.

3] Patikrinkite, ar nėra tvarkyklės atnaujinimų

Pasenę tvarkyklės sukelia atminties nutekėjimą. Atnaujinkite visus tvarkykles:

  1. Paspauskite Win + R ir atidarykite Bėk langas. Tipas devmgmt.MSC ir paspauskite „Enter“. Tai nukels jus į Įrenginių tvarkytuvė.
  2. Patikrinkite, ar nėra pasenusių tvarkyklių, ir atnaujinkite jas visas.
  3. Jei norite gauti naujinių, galbūt praleidote, patikrinkite „Windows Update“.

Tai buvo paprasta.

4] Optimizuokite našumą

Pakoregavus „Windows“ našumą bus tvarkoma viskas, įskaitant procesoriaus planavimą ir atminties naudojimą, siekiant sustabdyti atminties nutekėjimą. Atlikite šiuos veiksmus:

  1. Dešiniuoju pelės mygtuku spustelėkite „Šis kompiuteris„ir pasirinkite“Išplėstinėkairiojoje srityje.
  2. Pagal „Išplėstinė„skirtukas, eikite į“Spektaklis", po kurio eina"Nustatymai".
  3. Patikrinti 'Koreguokite, kad pasiektumėte geriausių rezultatųir spustelėkite Gerai.
  4. Paleiskite iš naujo ir patikrinkite, ar problema išspręsta.

Jei šis paprastas sprendimas nepasiteisino, išbandykite kitą sprendimą.

5] Išjunkite paleisties metu veikiančias programas

Išjungus varginančias programas, vienintelis būdas atsikratyti atminties nutekėjimo problemos. Eikite į „Task Manager“ ir išjunkite problemų sprendimo programą. Jei nežinote, kurios programos kelia problemų, atlikite tai:

  1. Eiti į 'Užduočių tvarkyklė".
  2. Eiti į 'Pradėti".
  3. Išjunkite paleisties programas, kurių jums nereikia paleisti pagal numatytuosius nustatymus.

6] Defrag Hard Drive

Nors „Windows 10“ tai daro už jus automatiškai, norint optimizuoti našumą, gali tekti kartais defragmentuoti kietuosius diskus:

  1. Eiti į 'Šis kompiuteris„arba“Mano kompiuteris".
  2. Dešiniuoju pelės mygtuku spustelėkite sistemos standųjį diską (paprastai C: diskas).
  3. Eiti į 'Įrankiai' pagal 'Savybės„ir pasirinkite“Optimizuokite".
  4. Pasirinkite diską, kurį norite defraguoti, ir pasirinkite 'Analizuokite".

Po naujo suskaidymo iš naujo paleiskite kompiuterį.

7] „ClearPage File“ išjungus

Dabar jis tampa sudėtingas - bet nesijaudinkite. Štai kaip išvalyti puslapio failą kiekvieną kartą išjungus:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager Atminties valdymas

Tai turėtų tai padaryti. Nepamirškite, kad jūsų išjungimo procesas užtruks šiek tiek daugiau laiko.

9] Išjungti „Superfetch“

Ši „Windows“ tarnyba optimizuoja našumą sumažindama įkrovos laiką. Tai leidžia „Windows“ tvarkyti RAM naudojimą. Gyvenimas išjungus „Superfetch“ nėra patogus, bet darykite tai, jei turite. Bent jau pabandykite tai padaryti, kad išskirtumėte problemą:

  1. Paieška paslaugos.MSC ir eikite į „Services Manager“.
  2. Ieškoti '„Superfetch“"ir dešiniuoju pelės mygtuku spustelėkite jį, kad pereitumėte"Savybės".
  3. Pasirinkite 'Sustabdyti".
  4. Taip pat 'Išjungtiišskleidžiamajame meniu.
  5. Iš naujo paleiskite kompiuterį ir patikrinkite, ar veikimas pagerėjo.

Įgalinkite „Superfetch“, jei šis neveikė.

10] Patikrinkite, ar nėra kenkėjiškų programų

Norėdami nuskaityti ir pašalinti kenkėjiškas programas, naudokite trečiosios šalies antivirusinę programinę įrangą arba „Windows 10“ vidinį „Windows Defender“. Įsitikinkite, kad antivirusinė programa atnaujinta, kad palaikytų jūsų OS, kad ji netaptų atminties nutekėjimo priežastimi.

Kiekvienas sprendimas, kurio jums gali prireikti norint rasti ar užkirsti kelią atminties nutekėjimui, yra čia. Galite daugiau sužinoti apie atminties nutekėjimą MSDN ir „Microsoft“.

Kaip užfiksuoti ir perduoti savo žaidimų sesiją sistemoje „Linux“
Anksčiau žaidimai buvo laikomi tik pomėgiu, tačiau laikui bėgant lošimų pramonė labai augo technologijų ir žaidėjų skaičiaus atžvilgiu. Žaidimų audito...
Geriausi žaidimai, kuriuos reikia žaisti naudojant rankos stebėjimą
„Oculus Quest“ neseniai pristatė puikią rankos stebėjimo be valdiklių idėją. „Oculus Quest“ rankų sekimo žaidimai iki šiol buvo ribojami, kai žaidimų ...
Kaip rodyti OSD perdangą viso ekrano „Linux“ programose ir žaidimuose
Žaisdami viso ekrano žaidimus arba naudodamiesi programomis be išsiblaškymo viso ekrano režimu, galite nutraukti nuo susijusios sistemos informacijos,...