Memorija

Kako pronaći i popraviti curenje memorije u sustavu Windows 10

Kako pronaći i popraviti curenje memorije u sustavu Windows 10

A Curenje memorije je pogrešno smještanje resursa u računalni program zbog neispravne 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 Java, JavaScript, C / C ++, Windows itd. Nije potrebna fizička zamjena RAM-a ili tvrdog diska.

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 kada 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 uzrokovanog komponentom upravljačkog programa u načinu jezgre.
  3. Pronalaženje curenja memorije u korisničkom načinu: Lociranje curenja uzrokovanog 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 memorije hrpe. 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

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 dodajte stupce poput Handles, User Objects, GDI Objects, itd.

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

Čitati: Koje su vrste memorije u računalu?

Microsoftovi alati za dijagnosticiranje curenja memorije

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

  1. Provjera programa dijagnosticira curenje hrpe.
  2. UMDH (komponenta alata za uklanjanje pogrešaka u sustavu Windows) dijagnosticira curenje za pojedinačne procese nadgledanjem 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. Koristite kernel RUČKAs i drugi pametni pokazivači za Win32 resurse i raspodjelu hrpe.
  2. Nabavite klase za automatsko upravljanje resursima za dodjelu jezgre iz ATL knjižnice. C ++ standard ima auto_ptr za raspodjelu hrpe.
  3. Inkapsulirajte pokazivače COM sučelja u "pametne pokazivače" uz pomoć _com_ptr_t ili _bstr_t ili _varijant_t.
  4. Nadgledajte .NET kôd za nenormalno korištenje 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 obrađujte dodjele u pametne pokazivače kako biste koristili iznimke C ++.
  7. Uvijek nazovite PropVariantClear funkcija 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 ponovno pokrenite.

Ako primijetite da nepotreban postupak 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 programske pogreške usporavanja rada računala je Runtime Broker. Pokušajte ako onemogući samo to.

2] Alati za dijagnostiku memorije

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

  1. Sačuvajte sav svoj važan posao.
  2. Pritisnite Win + R otvoriti Trčanje prozor.
  3. Upišite naredbu mdsched.exe u Trčanje prozor.
  4. Ponovo pokrenite računalo.
  5. Nakon ponovnog pokretanja izvedite osnovno skeniranje ili idite na 'Napredna'opcije poput'Test mješavina' ili 'Brojanje prolaza'.
  6. Pritisnite F10 za početak testa.

To su još uvijek privremeni popravci.

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

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

  1. Pritisnite Win + R i otvorite Trčanje prozor. Tip devmgmt.msc i pritisnite Enter. Odvest će vas do Upravitelj 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

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'Naprednapostavke na lijevom oknu.
  2. Ispod 'Napredna'kartica, idi na'Izvođenje', nakon čega slijedi'Postavke'.
  3. Ček 'Prilagodite 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

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

  1. Ići 'Upravitelj zadataka'.
  2. Ići 'Pokretanje'.
  3. Onemogućite programe za pokretanje koje prema zadanim postavkama ne trebate pokretati.

6] Defrag hard disk

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

  1. Ići 'Ovo računalo' ili 'Moje računalo'.
  2. Desnom tipkom miša kliknite tvrdi disk sustava (obično C: pogon).
  3. Ići 'Alati' pod, ispod 'Svojstva'i odaberite'Optimizirajte'.
  4. Odaberite pogon za defragmentaciju i odaberite 'Analizirati'.

Ponovo pokrenite računalo nakon nove fragmentacije.

7] Datoteka ClearPage pri isključivanju

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

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management

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. traži usluge.msc i idite na Services Manager.
  2. Tražiti 'Superfetch'i kliknite je desnom tipkom da biste otišli na'Svojstva'.
  3. Odaberi 'Stop'.
  4. Također 'Onemogući'usluga s padajućeg izbornika.
  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 za curenje 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.

Kontrolirajte i upravljajte kretanjem miša između više monitora u sustavu Windows 10
Dvostruki zaslon upravitelja miša omogućuje vam kontrolu i konfiguriranje kretanja miša između više monitora, usporavajući njegovo kretanje blizu gran...
WinMouse vam omogućuje prilagodbu i poboljšanje kretanja pokazivača miša na Windows računalu
Ako želite poboljšati zadane funkcije pokazivača miša, upotrijebite besplatni program WinMouse. Dodaje više značajki koje će vam pomoći da na najbolji...
Lijevi gumb miša ne radi u sustavu Windows 10
Ako s prijenosnim računalom ili stolnim računalom koristite namjenski miš, ali lijevi gumb miša ne radi u sustavu Windows 10/8/7 iz nekog razloga evo ...