Poiščite in odpravite puščanje pomnilnika v sistemu Windows 10

Memory Leak je zlorab otrok virov v računalniškem programu, zaradi nepravilnega dodeljevanja pomnilnika. To se zgodi, ko lokacija RAM-a, ki ni v uporabi, ostane neobjavljena. Puščanja pomnilnika ne gre zamenjevati z uhajanjem prostora, kar se nanaša na program, ki uporablja več RAM-a, kot je potrebno. Do puščanja pomnilnika v sistemu Windows 10/8/7 naj bi prišlo, ko spomin preprosto ni dostopen, čeprav ni v uporabi.

Puščanje pomnilnika v operacijskem sistemu Windows 10

Preden začnete, morate vedeti, da je uhajanje pomnilnika težava programske opreme za odpravljanje napak - na primer v Javi, JavaScript, C / C ++, Windows itd. Fizična zamenjava RAM-a ali trdega diska ni potrebna.

Puščanje pomnilnika v operacijskem sistemu Windows 10

Zakaj je slabo

Očitno je, da je uhajanje spomina slabo, ker gre za napako in napako v sistemu. Ugotovimo pa, kako natančno vpliva na sistem:

  1. Ker se pomnilnik ne sprosti, tudi ko ni v uporabi, povzroči zmanjšanje pomnilnika.
  2. Izčrpavanje pomnilnika povzroči staranje programske opreme.
  3. Zmanjšanje razpoložljivega pomnilnika vodi do povečanega odzivnega časa in slabega delovanja sistema.
  4. Nepreverjeno puščanje pomnilnika lahko sčasoma povzroči zrušitev aplikacije.

Če želite prepoznati uhajanje pomnilnika, mora imeti programer dostop do izvorne kode programa.

Iskanje puščanja

Da bi rešili težavo, jo moramo najprej prepoznati. Osnovni koraki za iskanje puščanja pomnilnika so:

  1. Potrditev : ugotavljanje, ali je prišlo do puščanja.
  2. Iskanje uhajanja pomnilnika v načinu jedra : iskanje uhajanja, ki ga povzroči komponenta gonilnika v načinu jedra.
  3. Iskanje uhajanja pomnilnika v uporabniškem načinu : iskanje uhajanja, ki ga povzroči gonilnik ali aplikacija v uporabniškem načinu.

Dodelitev pomnilnika

Obstajajo različni načini, v katerih aplikacije dodeljujejo RAM. Če se prostor po uporabi ne sprosti, bo prišlo do puščanja pomnilnika ne glede na način dodelitve. Nekateri pogosti vzorci dodeljevanja so:

  1. Funkcija HealAlloc za dodeljevanje kopice pomnilnika. Izvedbeni ekvivalenti C / C ++ so malloc in novi.
  2. Funkcija VirtualAlloc za neposredno dodelitev iz OS.
  3. Kernel32 API-ji za shranjevanje pomnilnika jedra za aplikacijo. Primer, CreateFile, CreateThread.
  4. API-ji User32 in API-ji Gdi32.

Preprečevanje uhajanja pomnilnika

Vsi vemo, da je preventiva boljša od zdravljenja, zato je nekaj načinov, kako preprečiti uhajanje spomina.

Spremljanje navad

Puščanje pomnilnika v operacijskem sistemu Windows 10

Paziti morate na neobičajno uporabo RAM-a s strani posameznih programov in aplikacij. Do Windows Task Manager lahko odprete tako, da pritisnete CTRL + SHIFT + ESC in dodate stolpce, kot so Ročaji, Uporabniški predmeti, Predmeti GDI itd.

To vam bo pomagalo enostavno spremljati porabo virov.

Microsoftova orodja za diagnosticiranje puščanja pomnilnika

Različna orodja diagnosticirajo uhajanje pomnilnika za različne načine dodeljevanja:

  1. Program za preverjanje diagnosticira puščanje kopice.
  2. UMDH (komponenta orodij za odpravljanje napak v sistemu Windows) diagnosticira puščanje za posamezne procese s spremljanjem dodeljevanja kopice pomnilnika.
  3. Trace Capture za temeljito analizo uporabe RAM-a.
  4. Tudi Xperf sledi vzorcem dodelitve kopice.
  5. Kup odpravljanja napak CRT ne samo sledi dodelitvam kopice, ampak tudi omogoča kodiranje, da zmanjša puščanje.
  6. JavaScript Memory Leak Detector odpravlja pomanjkljivosti pomnilnika v kodah.

Nasveti za uporabo

  1. Uporabite jedro HANDLE s in druge pametne kazalce za vire Win32 in dodelitve kopice.
  2. Pridobite razrede za samodejno upravljanje virov za dodelitve jedra iz knjižnice ATL. Standard C ++ ima auto_ptr za dodelitve kopice.
  3. Kapsulirajte kazalce vmesnika COM znotraj "pametnih kazalcev" s pomočjo _com_ptr_t ali _bstr_t ali _variant_t .
  4. Spremljajte kodo .NET za neobičajno uporabo pomnilnika.
  5. Izogibajte se več izhodnim potim za funkcije, da se dodelitve osvobodijo spremenljivk v večini blokov do konca funkcije.
  6. Uporabite izvorne izjeme šele potem, ko sprostite vse dodelitve v bloku _finally. Zavijte ves kup in obdelajte dodelitve v pametne kazalce, da uporabite izjeme C ++.
  7. Vedno pokličite funkcijo PropVariantClear, preden ponovno inicializirate ali zavržete objekt PROPVARIANT.

Odpravljanje težav s puščanjem pomnilnika v sistemu Windows

Tako kot različni načini za preprečevanje uhajanja pomnilnika tudi tu obstajajo različni načini za zaustavitev uhajanja pomnilnika. Preden pa začnete, ne pozabite najprej ustvariti obnovitvene točke sistema.

1] Zaprite procese in znova zaženite.

Če opazite, da nepotreben postopek zajema preveč RAM-a, lahko postopek končate v upravitelju opravil. Napravo boste morali znova zagnati, da bo sproščeni prostor na voljo za uporabo v drugih procesih. Brez ponovnega zagona težave z uhajanjem pomnilnika ne bodo rešene. Poseben postopek, ki povzroča napake pri upočasnitvi računalnika, je Runtime Broker. Poskusite, če onemogočite samo to.

2] Orodja za diagnostiko pomnilnika

Diagnostika pomnilnika Windows

Za dostop do vgrajenega diagnostičnega orodja Memory for Windows:

  1. Shranite vse svoje pomembno delo.
  2. Pritisnite Win + R, da odprete okno Run .
  3. V okno Zaženi vnesite ukaz mdsched.exe .
  4. Znova zaženite računalnik.
  5. Po ponovnem zagonu izvedite osnovno skeniranje ali izberite » Napredne « možnosti, kot sta » Test mix « ali » Pass count «.
  6. Pritisnite F10, da začnete preizkus.

To so še vedno začasni popravki.

3] Preverite, ali so na voljo posodobitve za gonilnike

Posodobite gonilniško programsko opremo

Zastareli gonilniki povzročajo puščanje pomnilnika. Naj bodo vsi gonilniki posodobljeni:

  1. Pritisnite Win + R in odprite okno Run . Vnesite devmgmt.msc in pritisnite Enter. Odprl vas bo upravitelj naprav .
  2. Preverite zastarele gonilnike in jih vse posodobite.
  3. Za posodobitve, ki ste jih morda zamudili, preverite v storitvi Windows Update.

To je bilo preprosto.

4] Optimizirajte delovanje

Prilagodite za najboljše delovanje

Prilagoditev operacijskega sistema Windows bo upravljala vse, vključno z razporejanjem procesorjev in porabo pomnilnika, da se ustavi uhajanje pomnilnika. Sledite tem korakom:

  1. Z desno miškino tipko kliknite » Ta računalnik « in v levem podoknu izberite » Dodatne « nastavitve.
  2. Na zavihku » Napredno « pojdite na » Učinkovitost « in nato v » Nastavitve «.
  3. Označite ' Prilagodi za najboljše delovanje ' in kliknite V redu .
  4. Znova zaženite in preverite, ali je težava odpravljena.

Če ta preprosta rešitev ni delovala, poskusite z naslednjo.

5] Onemogočite programe, ki se izvajajo ob zagonu

Zagonski programi

Onemogočanje težavnih programov je edini način, da se rešite težave s puščanjem pomnilnika. Pojdite v upravitelj opravil in onemogočite program za odpravljanje težav. Če ne veste, kateri programi povzročajo težave, naredite to:

  1. Pojdite na ' Upravitelj opravil '.
  2. Pojdite na » Zagon «.
  3. Onemogočite zagonske programe, ki jih po privzetku ni treba zagnati.

6] Odstrani trdi disk

Defragmentacija diska

Čeprav Windows 10 to stori samodejno, boste morda morali občasno defragmentirati trde diske, da optimizirate delovanje:

  1. Pojdite na » Ta računalnik « ali » Moj računalnik «.
  2. Z desno miškino tipko kliknite sistemski trdi disk (običajno pogon C:).
  3. Pojdite na » Orodja « pod » Lastnosti « in izberite » Optimiziraj «.
  4. Izberite pogon, ki ga želite defragmentirati, in izberite » Analiziraj «.

Po novi razdrobljenosti znova zaženite računalnik.

7] Datoteka ClearPage ob zaustavitvi

Zdaj postaja zapleteno - vendar ne skrbite. Tukaj je opisano, kako ob vsaki zaustavitvi počistiti datoteko strani:

  • Vnesite regedit v Iskanje, da zaženete urejevalnik registra.
  • Vnesite to pot:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Spremenite vrednost ClearPageFileAtShutDown na '1'.
  • Shranite spremembe in znova zaženite napravo.

To bi moralo storiti. Ne pozabite, da bo postopek zaustavitve trajal nekaj več časa.

9] Onemogoči Superfetch

Ta storitev Windows optimizira delovanje tako, da zmanjša čas zagona. Windowsu omogoča upravljanje uporabe RAM-a. Življenje po onemogočanju Superfetcha ni priročno, vendar to storite, če morate. Vsaj poskusite sami, da izolirate težavo:

  1. Poiščite services.msc in pojdite na Services Manager.
  2. Poiščite " Superfetch " in ga kliknite z desno miškino tipko, da odprete " Properties ".
  3. Izberite ' Stop '.
  4. Storitev v spustnem meniju tudi onemogočite .
  5. Znova zaženite računalnik in preverite, ali se je zmogljivost izboljšala.

Omogočite Superfetch, če ta ni deloval.

10] Preverite, ali je zlonamerna programska oprema

Za optično branje in odstranjevanje zlonamerne programske opreme uporabite neodvisno protivirusno programsko opremo ali lastni sistem Windows Defender za Windows 10. Prepričajte se, da je protivirusni program posodobljen tako, da podpira vaš operacijski sistem, tako da na koncu ne postane razlog za uhajanje pomnilnika.

Vsaka rešitev, ki jo boste kdaj potrebovali za iskanje ali preprečevanje uhajanja spomina, je prav tukaj. Več o puščanju pomnilnika lahko preberete v MSDN in Microsoftu.

Original text


Puščanje pomnilnika v operacijskem sistemu Windows 10