„Windows 10“ raskite ir pašalinkite atminties nutekėjimą

Atminties nutekėjimas yra išteklių į kompiuterinę programą Poslinkis dėl netinkamo atminties paskirstymas. Taip 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, nepaisant to, kad ji 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 standžiojo disko nereikia.

Atminties nuotėkis sistemoje „Windows 10“

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 : nustatymas, ar įvyko nuotėkis.
  2. Kaip rasti branduolio režimo atminties nuotėkį : rasti nuotėkį, kurį sukelia branduolio režimo tvarkyklės komponentas.
  3. Vartotojo režimo atminties nuotėkio radimas : nuotėkio, kurį sukelia vartotojo režimo tvarkyklė arba programa, nustatymas.

Atminties paskirstymas

Yra skirtingi režimai, kuriais programos paskirsto RAM. Jei po naudojimo vietos neatlaisvinsite, atminties nutekės, nepriklausomai nuo paskirstymo būdo. 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, kad būtų galima 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

Atminties nutekėjimas sistemoje „Windows 10“

Turite stebėti, ar atskiros programos ir programos nenaudoja RAM. Galite eiti į „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ą.

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

Įvairūs įrankiai diagnozuoja įvairių paskirstymo režimų atminties nutekėjimą:

  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“ - išsami RAM atminties analizė.
  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 branduolio HANDLE s ir kitus kitus išmaniuosius rodiklius „Win32“ ištekliams ir krūvos paskirstymui.
  2. Gaukite ATL bibliotekos branduolio paskirstymo automatinio išteklių valdymo klases. C ++ standartas turi auto_ptr, kad būtų galima paskirstyti kaupą.
  3. Įtraukite COM sąsajos rodykles į „išmaniuosius rodykles“ naudodami _com_ptr_t arba _bstr_t arba _variant_t .
  4. Stebėkite .NET kodą dėl nenormalaus atminties naudojimo.
  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 iškvieskite „ PropVariantClear“ funkciją prieš iš naujo inicijuodami ar sunaikindami 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ą. Tačiau 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ėtinant kompiuterį, yra „Runtime Broker“. Pabandykite, ar vien to išjungimas veikia.

2] Atminties diagnostikos įrankiai

„Windows“ atminties diagnostika

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

  1. Išsaugokite visus svarbius darbus.
  2. Paspauskite Win + R, kad atidarytumėte langą Vykdyti .
  3. Įveskite komandą mdsched.exe į Run lange.
  4. Perkraukite kompiuterį.
  5. Paleidus iš naujo, atlikite pagrindinį nuskaitymą arba eikite į parinktis „ Išplėstinė “, pvz., „ Test mix “ arba „ Pass count “.
  6. Norėdami pradėti bandymą, paspauskite F10 .

Tai vis dar laikini pataisymai.

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

Atnaujinti tvarkyklės programinę įrangą

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

  1. Paspauskite Win + R ir atidarykite langą Vykdyti . Įveskite devmgmt.msc ir paspauskite Enter. Nukreipsite į „ Device Manager“ .
  2. Patikrinkite, ar nėra pasenusių tvarkyklių, ir atnaujinkite jas visas.
  3. Norėdami rasti naujinių, kurių galbūt praleidote, patikrinkite „Windows Update“.

Tai buvo paprasta.

4] Optimizuokite našumą

Sureguliuokite, kad pasiektumėte geriausių rezultatų

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 kairiajame lauke pasirinkite „ Išplėstiniai “.
  2. Skirtuke „ Išplėstinė “ eikite į „ Našumas “, tada - „ Nustatymai “.
  3. Pažymėkite „ Koreguoti, kad pasiektumėte geriausių rezultatų “ ir spustelėkite Gerai .
  4. Paleiskite iš naujo ir patikrinkite, ar problema išspręsta.

Jei šis paprastas sprendimas nepadėjo, išbandykite kitą sprendimą.

5] Išjunkite paleisties metu veikiančias programas

Paleisties programos

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. Eikite į „ Užduočių tvarkyklę “.
  2. Eikite į „ Startup “.
  3. Išjunkite paleisties programas, kurių nereikia paleisti pagal numatytuosius nustatymus.

6] Defrag Hard Drive

Disko defragmentavimas

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

  1. Eikite į „ Šis kompiuteris “ arba „ Mano kompiuteris “.
  2. Dešiniuoju pelės mygtuku spustelėkite sistemos standųjį diską (paprastai C: diskas).
  3. Eikite į „ Įrankiai “ skiltyje „ Ypatybės “ ir pasirinkite „ Optimizuoti “.
  4. Pasirinkite diską, kurį norite defraguoti, ir pasirinkite „ Analizuoti “.

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:

  • Paieškoje įveskite regedit , kad paleistumėte registro redaktorių.
  • Įveskite šį kelią:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager Atminties valdymas
  • Pakeiskite „ ClearPageFileAtShutDown“ vertę į „1“.
  • Išsaugokite pakeitimus ir iš naujo paleiskite įrenginį.

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 atskirai nuo problemos:

  1. Ieškokite services.msc ir eikite į „Services Manager“.
  2. Ieškokite „ Superfetch “ ir dešiniuoju pelės mygtuku spustelėkite ją, kad pereitumėte į „ Ypatybės “.
  3. Pasirinkite „ Stop “.
  4. Išskleidžiamajame meniu taip pat „ Išjungti “ paslaugą.
  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 yra 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“.

Atminties nutekėjimas sistemoje „Windows 10“