Pronađite i popravite curenje memorije u sustavu Windows 11/10

Leak memorije(Memory Leak) je pogrešno postavljanje resursa u računalni program zbog pogrešne dodjele memorije. To se događa kada RAM lokacija koja se ne koristi ostane neobjavljena. Curenje memorije ne smije se miješati s curenjem prostora, što se odnosi na program koji koristi više RAM-a(RAM) nego što je potrebno. Do curenja memorije na Windows 11/10/8/7 se kaže da se dogodilo kada memorija jednostavno nije dostupna unatoč tome što se ne koristi.

Curenje memorije u sustavu Windows 11/10

Prije nego počnete, trebali biste znati da je curenje memorije softverski problem za otklanjanje pogrešaka – na primjer u (Memory)Javi(Java) , JavaScriptu(JavaScript) , C/C++, Windowsu(Windows) itd. Fizička zamjena RAM-a(RAM) ili tvrdog diska nije potrebna.

Curenje memorije u sustavu Windows 10

Zašto je loše

Očito je da je curenje memorije loše jer je to bug, nedostatak u sustavu. No, doznajmo kako to točno utječe na sustav:

  1. Budući da se memorija ne oslobađa čak ni kada se ne koristi, to rezultira iscrpljivanjem memorije.
  2. Iscrpljenost memorije dovodi do starenja softvera.
  3. Smanjena raspoloživa memorija dovodi do povećanog vremena odziva i loših performansi sustava.
  4. Neprovjereno curenje memorije može na kraju dovesti do pada aplikacije.

Kako bi identificirao curenje memorije, programer mora imati pristup izvornom kodu programa.

Lociranje curenja

Kako bismo riješili problem, prvo ga moramo identificirati. Osnovni koraci za lociranje curenja memorije su:

  1. Afirmacija(Affirmation) : Utvrđivanje je li došlo do curenja.
  2. Pronalaženje propuštanja memorije u načinu rada jezgre(Finding Kernel-mode memory leak) : Lociranje curenja uzrokovanog komponentom upravljačkog programa u načinu rada jezgre.
  3. Pronalaženje curenja memorije korisničkog načina rada(Finding User-mode memory leak) : lociranje curenja uzrokovanog upravljačkim programom ili aplikacijom korisničkog načina rada.

Dodjela memorije

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

  1. HealAlloc funkcija za dodjelu memorije hrpe. C/C++ runtime ekvivalenti su malloc i new.
  2. VirtualAlloc funkcija za izravnu dodjelu iz OS-a.
  3. Kernel32 API-ji(Kernel32 APIs) za držanje memorije kernela za aplikaciju. Primjer(Example) , CreateFile , CreateThread .
  4. User32 API-ji i Gdi32 API-ji.

Spriječite curenje memorije u sustavu Windows

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

Praćenje navika

Curenje memorije u sustavu Windows 10

Morate paziti na nenormalnu upotrebu RAM -a od strane pojedinih programa i aplikacija. Možete otići u Windows Task Manager pritiskom na CTRL+SHIFT+ESC i dodati stupce poput Handles , User Objects , GDI Objects , itd.

To će vam pomoći da jednostavno pratite korištenje resursa.

Pročitajte(Read) : Koje su vrste memorije u računalu?(What are the Types of Memory in a computer?)

Microsoftovi(Microsoft) alati za dijagnosticiranje curenja memorije

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

  1. Application Verifier dijagnosticira curenje hrpe.
  2. UMDH (komponenta Windows alata za otklanjanje pogrešaka(Windows Debugging Tools) ) dijagnosticira curenje za pojedinačne procese praćenjem raspodjele memorije hrpe.
  3. Trace Capture za temeljitu analizu korištenja RAM -a .
  4. Xperf također prati uzorke dodjele hrpe.
  5. CRT Debug Heap ne samo da prati raspodjelu hrpe, već također omogućuje prakse kodiranja za smanjenje curenja.
  6. JavaScript Detektor propuštanja(JavaScript Memory Leak Detector) memorije otklanja greške u propuštanju memorije u kodovima.

Savjeti za korištenje

  1. Koristite kernel HANDLE i druge pametne pokazivače za Win32 resurse i dodjelu hrpe.
  2. Nabavite(Get) klase za automatsko upravljanje resursima za dodjelu kernela iz ATL biblioteke. C++ standard ima auto_ptr za dodjelu hrpe.
  3. Inkapsulirajte pokazivače COM(Encapsulate COM) sučelja unutar "pametnih pokazivača" uz pomoć _com_ptr_t ili _bstr_t ili _variant_t .
  4. Pratite (Monitor).NET kod radi nenormalne upotrebe memorije.
  5. Izbjegavajte(Avoid) više izlaznih putova za funkcije kako biste omogućili oslobađanje alokacija od varijabli u većini blokova do kraja funkcije.
  6. Upotrijebite(Use) izvorne iznimke samo nakon oslobađanja svih dodjela u bloku _finally . Zamotajte(Wrap) sve alokacije hrpe i ručke u pametne pokazivače kako biste koristili C++ iznimke.
  7. Uvijek pozovite funkciju PropVariantClear prije ponovne inicijalizacije ili odbacivanja PROPVARIANT objekta.

Rješavanje problema(Troubleshoot) s curenjem memorije u sustavu Windows(Windows)

Baš kao i različiti načini za sprječavanje curenja memorije, postoje različiti načini za zaustavljanje curenja memorije. Ali prije nego što počnete, ne zaboravite prvo stvoriti točku vraćanja sustava .

1] Zatvorite procese i ponovno pokrenite.

Ako vidite da nepotreban proces zauzima previše RAM-a(RAM) , možete ga prekinuti u Upravitelju zadataka(Task Manager) . Morat ćete ponovno pokrenuti uređaj kako bi oslobođeni prostor bio dostupan za korištenje drugim procesima. Bez ponovnog pokretanja(Restart) problem curenja memorije neće biti riješen. Jedan poseban proces koji sadrži greške za usporavanje računala je Runtime Broker . Pokušajte ako samo to onemogućavanje radi.

2] Alati za dijagnostiku memorije

Windows dijagnostika memorije

Za pristup ugrađenom alatu za dijagnostiku memorije(Memory Diagnostic Tool) za Windows:

  1. Sačuvajte sav vaš važan posao.
  2. Pritisnite Win + R da otvorite prozor Run .
  3. Upišite naredbu mdsched.exe u prozoru Pokreni(Run) .
  4. Ponovno pokrenite računalo.
  5. Nakon ponovnog pokretanja, izvršite osnovno skeniranje ili idite na opcije ' Napredne(Advanced) ' kao što su ' Test mix ' ili ' Pros count(Pass count) '.
  6. Pritisnite F10 za početak testa.

Ovo su još uvijek privremeni popravci.

3] Provjerite ima li ažuriranja upravljačkih programa

Ažurirajte softver upravljačkog programa

Zastarjeli upravljački programi uzrokuju curenje memorije. Držite sve upravljačke programe ažuriranim :

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

Ovo je bilo jednostavno.

4] Optimizirajte performanse

Prilagodite za najbolju izvedbu

Prilagodba sustava Windows za performanse upravljat će svime, uključujući zakazivanje procesora i korištenje memorije kako bi se zaustavilo curenje memorije. Prati ove korake:

  1. Desnom tipkom miša kliknite ' Ovo računalo(This PC) ' i odaberite ' Napredne(Advanced) postavke' na lijevom oknu.
  2. Na kartici ' Napredno(Advanced) ' idite na ' Performanse(Performance) ', a zatim ' Postavke(Settings) '.
  3. Označite " Prilagodi za najbolju izvedbu(Adjust for best performance) " i kliknite U redu(OK) .
  4. Ponovo pokrenite(Restart) i provjerite je li problem riješen.

Ako ovo jednostavno rješenje nije uspjelo, pokušajte sa sljedećim rješenjem.

5] Onemogućite programe(Programs) koji se pokreću pri pokretanju(Startup)

Programi za pokretanje

Onemogućavanje problematičnih programa jedini je način da se riješite problema s curenjem memorije. Idite na Upravitelj zadataka(Task Manager) i onemogućite program koji stvara probleme. Ako ne znate koji programi stvaraju probleme, učinite ovo:

  1. Idite na " Upravitelj zadataka(Task Manager) ".
  2. Idite na " Pokretanje(Startup) ".
  3. Onemogućite programe za pokretanje(Disable the startup programs) koje ne morate pokretati prema zadanim postavkama.

6] Defragirajte tvrdi disk

Defragmentacija diska

Iako Windows 10 to radi automatski umjesto vas, možda ćete morati povremeno defragmentirati tvrde diskove kako biste optimizirali performanse:

  1. Idite na ' Ovo računalo(This PC) ' ili ' Moje računalo(My Computer) '.
  2. Desnom tipkom miša kliknite(Right-Click) tvrdi disk sustava (obično C: pogon).
  3. Idite na " Alati(Tools) " pod " Svojstva(Properties) " i odaberite " Optimiziraj(Optimize) ".
  4. Odaberite pogon za defragmentaciju i odaberite " Analiziraj(Analyze) ".

Ponovno pokrenite računalo nakon nove fragmentacije.

7] ClearPage File prilikom isključivanja

Sada postaje složeno – ali ne brinite. Evo kako izbrisati datoteku stranice pri svakom gašenju(clear the Page File at every shutdown) :

  • Utipkajte regedit u Search za pokretanje uređivača registra(Registry Editor) .
  • Unesite ovaj put:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Promijenite vrijednost ClearPageFileAtShutDown u '1'.( ClearPageFileAtShutDown to ‘1’.)
  • Spremite promjene i ponovno pokrenite(Restart) uređaj.

Ovo bi to trebalo učiniti. Imajte na umu da će vaš proces isključivanja potrajati malo više vremena.

9] Onemogući Superfetch

Ova Windows usluga(Windows Service) optimizira performanse minimiziranjem vremena pokretanja. Omogućuje Windowsima(Windows) upravljanje korištenjem RAM -a . Život(Life) nakon onemogućavanja Superfetcha(Superfetch) nije prikladan, ali učinite to ako morate. Barem pokušajte ovo sami da izolirate problem:

  1. Pretražite services.msc i idite na Services Manager.
  2. Potražite " Superfetch " i kliknite ga desnom tipkom miša da biste otišli na " Svojstva(Properties) ".
  3. Odaberite " Zaustavi(Stop) ".
  4. Također " Onemogući(Disable) " uslugu s padajućeg izbornika.
  5. Ponovno pokrenite računalo i provjerite je li se izvedba poboljšala.

Omogućite Superfetch ako ovaj ne radi.

10] Provjerite ima li zlonamjernog softvera

Koristite antivirusni softver treće strane ili vlastiti Windows Defender za Windows 10 za skeniranje i uklanjanje zlonamjernog softvera. Provjerite(Make) je li antivirusni program ažuriran tako da podržava vaš OS kako ne bi na kraju postao razlogom za curenje memorije.

Ovdje je svako rješenje koje vam ikada zatreba da pronađete ili spriječite curenje memorije. Više o curenju memorije možete pročitati na MSDN -u i Microsoftu(Microsoft) .



About the author

Ja sam stručnjak za korisničku podršku za Windows 10/11/10 s više od 5 godina iskustva. Također sam strastveni igrač posljednjih nekoliko godina i snažno me zanima xbox One. Moj trenutni fokus je pomaganje korisnicima s problemima koje imaju sa svojim Windows 10 ili Windows 11 sustavima, često kroz korištenje naših alata za korisničku podršku, kao što je podrška pozivnog centra i online pomoć.



Related posts