Pronađite i popravite curenje memorije u sustavu Windows 10

Otjecanje memorije je misplacement od resursa u računalni program zbog neispravnih dodjele memorije. To se događa kada RAM mjesto koje se ne koristi ostane neobjavljeno. Propuštanje memorije ne treba miješati s propuštanjem prostora, što se odnosi na program koji koristi više RAM-a nego što je potrebno. Kaže se da je do curenja memorije u sustavu Windows 10/8/7 došlo kada memorija jednostavno nije dostupna unatoč tome što se ne koristi.

Curenje memorije u sustavu Windows 10

Prije nego što započnete, trebali biste znati da je curenje memorije problem s softverom za otklanjanje pogrešaka - na primjer u Javi, JavaScript-u, C / C ++, Windows-u itd. Nije potrebna fizička zamjena RAM-a ili tvrdog diska.

Propuštanje memorije u sustavu Windows 10

Zašto je loše

Očito je da je curenje memorije loše jer je greška, nedostatak u sustavu. Ali saznajmo kako točno utječe na sustav:

  1. Budući da se memorija ne oslobađa čak i kad se ne koristi, rezultira iscrpljenjem memorije.
  2. Iscrpljenost memorije rezultira starenjem softvera.
  3. Smanjena dostupna memorija dovodi do povećanog vremena odziva i loših performansi sustava.
  4. Neprovjereno curenje memorije na kraju može dovesti do pada programa.

Da bi prepoznao curenje memorije, programer mora imati pristup izvornom kodu programa.

Lociranje curenja

Da bismo riješili problem, prvo ga moramo identificirati. Osnovni koraci za pronalaženje curenja memorije su:

  1. Afirmacija : utvrđivanje je li došlo do curenja.
  2. Pronalaženje curenja memorije u načinu jezgre : lociranje curenja uzrokovano komponentom pokretačkog programa u načinu jezgre.
  3. Pronalaženje curenja memorije u korisničkom načinu : lociranje curenja uzrokovano upravljačkim programom ili aplikacijom u korisničkom načinu.

Dodjela memorije

Postoje različiti načini u kojima aplikacije dodjeljuju RAM. Ako se prostor ne oslobodi nakon upotrebe, iscurit će memorija bez obzira na način dodjele. Neki uobičajeni obrasci raspodjele su:

  1. HealAlloc funkcija za dodjelu hrpe memorije. Ekvivalenti vremena izvođenja C / C ++ su malloc i novi.
  2. Funkcija VirtualAlloc za izravno dodjeljivanje iz OS-a.
  3. Kernel32 API-ji za zadržavanje memorije jezgre za aplikaciju. Primjer, CreateFile, CreateThread.
  4. API-ji User32 i Gdi32 API-ji.

Sprječavanje curenja memorije

Svi znamo da je prevencija bolja od liječenja, pa evo nekoliko načina kako spriječiti curenje memorije.

Navike praćenja

Curenje memorije u sustavu Windows 10

Morate pripaziti na abnormalno korištenje RAM-a od strane pojedinih programa i aplikacija. Možete otvoriti Windows Task Manager pritiskom na CTRL + SHIFT + ESC i dodati stupce poput Handles, User Objects, GDI Objects itd.

To će vam pomoći da lako nadgledate upotrebu resursa.

Microsoftovi alati za dijagnosticiranje curenja memorije

Razni alati dijagnosticiraju curenje memorije za različite načine dodjele:

  1. Provjernik aplikacija dijagnosticira curenje hrpe.
  2. UMDH (komponenta alata za ispravljanje pogrešaka u sustavu Windows) dijagnosticira curenje za pojedinačne procese nadziranjem dodjele hrpe memorije.
  3. Trace Capture za temeljitu analizu upotrebe RAM-a.
  4. Xperf također prati obrasce raspodjele hrpe.
  5. CRT hrpa za otklanjanje pogrešaka ne samo da prati dodjelu hrpe, već također omogućuje prakse kodiranja kako bi se smanjila curenja.
  6. JavaScript detektor curenja memorije otklanja pogreške u memoriji u kodovima.

Savjeti za upotrebu

  1. Upotrijebite HANDLE s jezgrom i takve druge pametne pokazivače za Win32 resurse i dodjelu hrpe.
  2. Nabavite klase za automatsko upravljanje resursima za dodjelu jezgre iz ATL knjižnice. C ++ standard ima auto_ptr za dodjelu hrpe.
  3. Inkapsulirajte pokazivače COM sučelja unutar "pametnih pokazivača" uz pomoć _com_ptr_t ili _bstr_t ili _variant_t .
  4. Nadgledajte .NET kôd radi nepravilnog korištenja memorije.
  5. Izbjegavajte više izlaznih staza za funkcije kako bi se alokacije oslobodile varijabli u većini blokova do kraja funkcije.
  6. Koristite izvorne iznimke tek nakon što oslobodite sva izdvajanja u bloku _finally. Zamotajte svu hrpu i obradite dodjele u pametne pokazivače kako biste koristili iznimke C ++.
  7. Uvijek pozovite funkciju PropVariantClear prije ponovne inicijalizacije ili odbacivanja PROPVARIANT objekta.

Rješavanje problema curenja memorije u sustavu Windows

Baš kao i različiti načini sprječavanja curenja memorije, postoje različiti načini zaustavljanja curenja memorije. No, prije nego što započnete, ne zaboravite prvo stvoriti točku za obnavljanje sustava.

1] Zatvorite procese i ponovo pokrenite.

Ako primijetite da nepotreban proces zauzima previše RAM-a, postupak možete završiti u upravitelju zadataka. Morat ćete ponovo pokrenuti uređaj tako da oslobođeni prostor bude dostupan za upotrebu u drugim procesima. Bez ponovnog pokretanja problem curenja memorije neće biti riješen. Jedan određeni proces koji uzrokuje bugove usporavanja rada računala je Runtime Broker. Pokušajte ako onemogući samo to.

2] Alati za dijagnostiku memorije

Dijagnostika memorije sustava Windows

Da biste pristupili ugrađenom dijagnostičkom alatu za memoriju za Windows:

  1. Spremite sav svoj važan posao.
  2. Pritisnite Win + R da biste otvorili prozor Run .
  3. Upišite naredbu mdsched.exe u Run prozor.
  4. Ponovo pokrenite računalo.
  5. Nakon ponovnog pokretanja izvedite osnovno skeniranje ili odaberite " Napredne " opcije poput " Test mix " ili " Pass count ".
  6. Pritisnite F10 da biste započeli test.

To su još uvijek privremeni popravci.

3] Provjerite ima li ažuriranja za upravljački program

Ažurirajte upravljački softver

Zastarjeli upravljački programi uzrokuju curenje memorije. Ažurirajte sve upravljačke programe:

  1. Pritisnite Win + R i otvorite prozor Run . Upišite devmgmt.msc i pritisnite Enter. Odvest će vas do Upravitelja uređaja .
  2. Provjerite ima li zastarjelih upravljačkih programa i ažurirajte ih sve.
  3. Ažuriranja koja ste možda propustili potražite u usluzi Windows Update.

Ovo je bilo jednostavno.

4] Optimizirajte izvedbu

Prilagodite za najbolje performanse

Prilagođavanjem operativnog sustava Windows upravljat će svime, uključujući zakazivanje procesora i upotrebu memorije, kako bi se zaustavilo curenje memorije. Prati ove korake:

  1. Desnom tipkom miša kliknite " Ovo računalo " i odaberite " Napredne " postavke u lijevom oknu.
  2. Na kartici " Napredno " idite na " Izvedba ", a zatim " Postavke ".
  3. Označite " Prilagodi za najbolje performanse " i kliknite U redu .
  4. Ponovo pokrenite i provjerite je li problem riješen.

Ako ovo jednostavno rješenje nije uspjelo, isprobajte sljedeće rješenje.

5] Onemogućite programe koji se izvode pri pokretanju

Startup programi

Onemogućavanje problematičnih programa jedini je način da se riješite problema s curenjem memorije. Idite na Upravitelj zadataka i onemogućite program za rješavanje problema. Ako ne znate koji programi stvaraju probleme, učinite sljedeće:

  1. Idite na " Upravitelj zadataka ".
  2. Idite na " Pokretanje ".
  3. Onemogućite programe za pokretanje koje prema zadanim postavkama ne trebate pokretati.

6] Defrag hard disk

Defragmentacija diska

Iako Windows 10 to čini automatski za vas, možda ćete trebati povremeno defragmentirati tvrde diskove kako biste optimizirali performanse:

  1. Idite na " Ovo računalo " ili " Moje računalo ".
  2. Desnom tipkom miša kliknite tvrdi disk sustava (obično C: pogon).
  3. Idite na " Alati " pod " Svojstva " i odaberite " Optimiziraj ".
  4. Odaberite pogon za defragmentaciju i odaberite " Analiziraj ".

Ponovo pokrenite računalo nakon nove fragmentacije.

7] ClearPage datoteka pri isključivanju

Sad postaje sve složenije - ali ne brinite. Evo kako očistiti datoteku stranice pri svakom isključivanju:

  • Upišite regedit u Search da biste pokrenuli uređivač registra.
  • Unesite ovu stazu:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Promijenite vrijednost ClearPageFileAtShutDown u '1'.
  • Spremite promjene i ponovo pokrenite uređaj.

Ovo bi to trebalo učiniti. Ne zaboravite da će postupak isključivanja potrajati malo više vremena.

9] Onemogući Superfetch

Ova Windows usluga optimizira izvedbu minimalizirajući vrijeme pokretanja. Omogućuje sustavu Windows da upravlja upotrebom RAM-a. Život nakon onemogućavanja Superfetcha nije zgodan, ali učinite to ako morate. Pokušajte barem ovo sami kako biste izolirali problem:

  1. Pretražite services.msc i idite na Services Manager.
  2. Potražite " Superfetch " i kliknite ga desnom tipkom da biste otišli na " Properties ".
  3. Odaberite " Stop ".
  4. Također s padajućeg izbornika ' Onemogući ' uslugu.
  5. Ponovo pokrenite računalo i provjerite jesu li se performanse poboljšale.

Omogućite Superfetch ako ovaj nije uspio.

10] Provjerite ima li zlonamjernog softvera

Upotrijebite antivirusni softver treće strane ili interni sustav Windows Defender sustava Windows 10 za skeniranje i uklanjanje zlonamjernog softvera. Provjerite je li antivirus ažuriran da podržava vaš OS kako ne bi na kraju postao razlog curenja memorije.

Svako rješenje koje će vam možda trebati za pronalaženje ili sprečavanje curenja memorije je upravo ovdje. Možete pročitati više o curenju memorije na MSDN-u i Microsoftu.

Curenje memorije u sustavu Windows 10