Memorie

Cum să găsiți și să remediați scurgerile de memorie în Windows 10

Cum să găsiți și să remediați scurgerile de memorie în Windows 10

A Pierdere de memorie este o deplasare greșită a resurselor într-un program de computer din cauza alocării defectuoase a memoriei. Se întâmplă atunci când o locație RAM neutilizată rămâne nepublicată. O scurgere de memorie nu trebuie confundată cu o scurgere de spațiu, care se referă la un program care utilizează mai mult RAM decât este necesar. O scurgere de memorie pe un sistem Windows 10/8/7 se spune că a avut loc atunci când memoria nu este accesibilă chiar dacă nu este utilizată.

Scurgeri de memorie în Windows 10

Înainte de a începe, trebuie să știți că Memory leak este o problemă software de depanat - de exemplu în Java, JavaScript, C / C ++, Windows etc. Înlocuirea fizică a RAM-ului sau a hard diskului nu este necesară.

De ce este rău

Este evident că o scurgere de memorie este proastă, deoarece este o eroare, un defect în sistem. Dar să aflăm cum afectează exact sistemul:

  1. Deoarece memoria nu este eliberată chiar și atunci când nu este utilizată, aceasta duce la epuizarea memoriei.
  2. Epuizarea memoriei are ca rezultat îmbătrânirea software-ului.
  3. Memoria disponibilă redusă duce la creșterea timpului de răspuns și la performanțe slabe ale sistemului.
  4. O scurgere de memorie necontrolată poate duce în cele din urmă la blocarea unei aplicații.

Pentru a identifica o scurgere de memorie, un programator trebuie să aibă acces la codul sursă al programului.

Localizarea scurgerii

Pentru a rezolva o problemă, trebuie mai întâi să o identificăm. Pașii de bază pentru localizarea unei scurgeri de memorie sunt:

  1. Afirmare: Determinarea dacă a avut loc o scurgere.
  2. Găsirea scurgerii de memorie în modul Kernel: Localizarea unei scurgeri cauzată de o componentă a driverului în modul kernel.
  3. Găsirea scurgerii de memorie în modul utilizator: Localizarea unei scurgeri cauzată de un driver sau aplicație în modul utilizator.

Alocare de memorie

Există diferite moduri în care aplicațiile alocă RAM. Dacă spațiul nu este eliberat după utilizare, scurgerea de memorie va avea loc indiferent de modul de alocare. Unele modele comune de alocare sunt:

  1. Funcția HealAlloc pentru alocarea memoriei heap. Echivalenții de runtime C / C ++ sunt malloc și noi.
  2. Funcție VirtualAlloc pentru alocarea directă de la sistemul de operare.
  3. API-uri Kernel32 pentru a păstra memoria kernel pentru aplicație. Exemplu, CreateFile, CreateThread.
  4. API-urile User32 și API-urile Gdi32.

Prevenirea scurgerilor de memorie

Știm cu toții că prevenirea este mai bună decât vindecarea, așa că iată câteva modalități de a preveni scurgerea de memorie.

Obiceiuri de monitorizare

Trebuie să țineți cont de utilizarea anormală a RAM de către programe și aplicații individuale. Puteți accesa Windows Task Manager apăsând CTRL + SHIFT + ESC și adăugați coloane precum Handles, User Objects, GDI Objects etc.

Acest lucru vă va ajuta să monitorizați cu ușurință utilizarea resurselor.

Citit: Care sunt tipurile de memorie dintr-un computer?

Instrumente Microsoft pentru diagnosticarea scurgerilor de memorie

Diverse instrumente diagnostică scurgerile de memorie pentru diferite moduri de alocare:

  1. Application Verifier diagnostică scurgeri de heap.
  2. UMDH (o componentă a instrumentelor de depanare Windows) diagnostică scurgeri pentru procese individuale prin monitorizarea alocărilor de memorie heap.
  3. Trace Capture pentru o analiză aprofundată a utilizării RAM.
  4. Și Xperf urmărește tiparele de alocare a heap-ului.
  5. CRT Debug Heap nu numai că urmărește alocările heap, ci permite, de asemenea, practicile de codificare pentru a minimiza scurgerile.
  6. JavaScript Memory Leak Detector depanează scurgerile de memorie în coduri.

Sfaturi de utilizare

  1. Utilizați nucleul MÂNERs și alte indicatoare inteligente pentru resurse Win32 și alocări de heap.
  2. Obțineți clase pentru gestionarea automată a resurselor pentru alocările kernelului din biblioteca ATL. C ++ standard are auto_ptr pentru alocări de heap.
  3. Încapsulați indicatorii de interfață COM în „indicatori inteligenți” cu ajutorul _com_ptr_t sau _bstr_t sau _varianta_t.
  4. Monitorizați .Cod NET pentru utilizarea anormală a memoriei.
  5. Evitați mai multe căi de ieșire pentru funcții pentru a permite alocărilor să fie eliberate de variabilele din majoritatea blocurilor până la sfârșitul unei funcții.
  6. Utilizați excepții native numai după ce ați eliberat toate alocațiile din blocul _final. Înfășurați toate heap-urile și gestionați alocările în indicatoare inteligente pentru a utiliza excepții C ++.
  7. Sună întotdeauna la PropVariantClear funcție înainte de a reinițializa sau de a arunca un obiect PROPVARIANT.

Depanarea scurgerilor de memorie în Windows

La fel ca diferitele modalități de a preveni scurgerile de memorie, există diferite modalități de a opri scurgerile de memorie. Dar, înainte de a începe, nu uitați să creați mai întâi un punct de restaurare a sistemului.

1] Închideți procesele și reporniți.

Dacă vedeți că un proces inutil necesită prea multă memorie RAM, puteți termina procesul în Task Manager. Va trebui să reporniți dispozitivul, astfel încât spațiul liber să fie disponibil pentru a fi utilizat de alte procese. Fără o Repornire problema scurgerii de memorie nu va fi rezolvată. Un proces special care conține erori pentru a încetini PC-ul este Runtime Broker. Încercați dacă dezactivarea asta funcționează singură.

2] Instrumente de diagnosticare a memoriei

Pentru a accesa instrumentul de diagnosticare a memoriei încorporat pentru Windows:

  1. Salvați toată munca dvs. importantă.
  2. presa Câștigă + R pentru a deschide Alerga fereastră.
  3. Tastați comanda mdsched.exe în Alerga fereastră.
  4. Reporniți computerul.
  5. După o repornire, efectuați o scanare de bază sau mergeți la „Avansat„opțiuni precum”Test mix„sau”Numărul de pase'.
  6. presa F10 pentru a începe testul.

Acestea sunt încă remedieri temporare.

3] Verificați dacă există actualizări ale driverului

Driverele învechite provoacă scurgeri de memorie. Păstrați toți șoferii actualizați:

  1. presa Câștigă + R și deschideți Alerga fereastră. Tip devmgmt.msc și apăsați Enter. Vă va duce la Manager de dispozitiv.
  2. Verificați dacă există drivere învechite și actualizați-le pe toate.
  3. Pentru actualizări, este posibil să fi ratat, verificați în Windows Update.

A fost simplu.

4] Optimizați performanța

Reglarea Windows pentru performanță va gestiona totul, inclusiv programarea procesorului și utilizarea memoriei, pentru a opri scurgerile de memorie. Urmați acești pași:

  1. Faceți clic dreapta pe „Acest PC„și selectează”Avansat'setările din panoul din stânga.
  2. Sub 'Avansat'fila, accesați'Performanţă', urmată de 'Setări'.
  3. Verifica 'Reglați pentru cea mai bună performanță'și faceți clic O.K.
  4. Reporniți și verificați dacă problema este rezolvată.

Dacă această soluție simplă nu a funcționat, încercați următoarea soluție.

5] Dezactivați programele care rulează la pornire

Dezactivarea programelor supărătoare este singura modalitate de a scăpa de problema scurgerilor de memorie. Accesați Managerul de activități și dezactivați programul de depanare. Dacă nu știți ce programe creează probleme, faceți acest lucru:

  1. Mergi la 'Gestionar de sarcini'.
  2. Mergi la 'Lansare'.
  3. Dezactivați programele de pornire pe care nu trebuie să le rulați în mod implicit.

6] Defragarea hard diskului

Deși Windows 10 face acest lucru în mod automat pentru dvs., poate fi necesar să defragiați hard disk-urile ocazional pentru a optimiza performanța:

  1. Mergi la 'Acest PC„sau”Calculatorul meu'.
  2. Faceți clic dreapta pe unitatea de disc a sistemului (de obicei unitatea C:).
  3. Mergi la 'Instrumente' sub 'Proprietăți„și selectează”Optimizați'.
  4. Selectați unitatea de defrag și selectați „A analiza'.

Reporniți computerul după noua fragmentare.

7] ClearPage File la închidere

Acum devine complex - dar nu vă faceți griji. Iată cum puteți șterge fișierul de pagină la fiecare oprire:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management

Aceasta ar trebui să o facă. Amintiți-vă că procesul de oprire va dura puțin mai mult.

9] Dezactivați Superfetch

Acest serviciu Windows optimizează performanța minimizând timpul de pornire. Permite Windows să gestioneze utilizarea RAM. Viața după dezactivarea Superfetch nu este convenabilă, dar faceți-o dacă este necesar. Încercați cel puțin acest lucru singur pentru a izola problema:

  1. Căutare Servicii.msc și accesați Managerul de servicii.
  2. Cauta 'Superfetch„și faceți clic dreapta pe el pentru a accesa”Proprietăți'.
  3. Selectați 'Stop'.
  4. De asemenea 'Dezactivează„serviciul din meniul derulant.
  5. Reporniți computerul și verificați dacă performanța s-a îmbunătățit.

Activați Superfetch dacă acesta nu a funcționat.

10] Verificați dacă există programe malware

Utilizați un software antivirus terță parte sau Windows 10 Windows Defender intern pentru a scana și a elimina malware-ul. Asigurați-vă că antivirusul este actualizat pentru a vă sprijini sistemul de operare, astfel încât acesta să nu devină motivul scurgerii de memorie.

Fiecare soluție de care este posibil să aveți nevoie pentru a găsi sau preveni scurgerile de memorie este chiar aici. Puteți citi mai multe despre scurgerile de memorie pe MSDN și Microsoft.

Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...
Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...
How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...