Găsiți și remediați scurgerile de memorie în Windows 10

O scurgere 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. Se spune că o scurgere de memorie pe un sistem Windows 10/8/7 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ă scurgerea de memorie este o problemă de software pentru depanare - de exemplu în Java, JavaScript, C / C ++, Windows, etc. Nu este necesară înlocuirea fizică a RAM sau a hard diskului.

Scurgere de memorie în Windows 10

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ă, are ca rezultat 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. Scurgerea 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 scurgerilor de memorie în modul utilizator : localizarea unei scurgeri cauzate de driverul sau aplicația î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-uri User32 și API-uri 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

Scurgeri de memorie în Windows 10

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.

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 kernel HANDLE și alte astfel de 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. Standardul C ++ are auto_ptr pentru alocările heap.
  3. Încapsulați indicatorii de interfață COM în „indicatori inteligenți” cu ajutorul _com_ptr_t sau _bstr_t sau _variant_t .
  4. Monitorizați codul .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. Apelați întotdeauna funcția PropVariantClear înainte de a reinițializa sau 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

Diagnostic de memorie Windows

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

  1. Salvați toată munca dvs. importantă.
  2. Apăsați Win + R pentru a deschide fereastra Run .
  3. Tastați comanda mdsched.exe în fereastra Run .
  4. Reporniți computerul.
  5. După o repornire, efectuați o scanare de bază sau alegeți opțiunile „ Avansate ”, cum ar fi „ Test mix ” sau „ Pass count ”.
  6. Apăsați F10 pentru a începe testul.

Acestea sunt încă remedieri temporare.

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

Actualizați software-ul driverului

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

  1. Apăsați Win + R și deschideți fereastra Run . Tastați devmgmt.msc și apăsați Enter. Vă va duce la Manager dispozitive .
  2. Verificați dacă există drivere învechite și actualizați-le pe toate.
  3. Pentru actualizări pe care s-ar putea să le fi ratat, accesați Windows Update.

A fost simplu.

4] Optimizați performanța

Reglați pentru cea mai bună performanță

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 computer ” și selectați setările „ Avansate ” din panoul din stânga.
  2. Sub fila „ Avansat ”, accesați „ Performanță ”, urmat de „ Setări ”.
  3. Bifați „ Ajustați pentru cea mai bună performanță ” și faceți clic pe OK .
  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

Programele de 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. Accesați „ Task Manager ”.
  2. Accesați „ Startup ”.
  3. Dezactivați programele de pornire pe care nu trebuie să le rulați în mod implicit.

6] Defragarea hard diskului

Defragmentarea discului

Deși Windows 10 face acest lucru în mod automat pentru dvs., este posibil să fie nevoie să faceți defragmentarea hard diskurilor ocazional pentru a optimiza performanța:

  1. Accesați „ Acest computer ” sau „ Computerul meu ”.
  2. Faceți clic dreapta pe unitatea de disc a sistemului (de obicei C: unitate).
  3. Accesați „ Instrumente ” sub „ Proprietăți ” și selectați „ Optimizați ”.
  4. Selectați unitatea de defrag și selectați „ Analize ”.

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:

  • Tastați regedit în Căutare pentru a lansa Editorul de registry.
  • Introduceți această cale:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Schimbați valoarea ClearPageFileAtShutDown la „1”.
  • Salvați modificările și reporniți dispozitivul.

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 prin minimizarea timpului de pornire. Acesta 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ăutați services.msc și accesați Manager servicii.
  2. Căutați „ Superfetch ” și faceți clic dreapta pe el pentru a merge la „ Properties ”.
  3. Selectați „ Stop ”.
  4. De asemenea, „ Dezactivați ” serviciul din meniul derulant.
  5. Reporniți computerul și verificați dacă performanța sa î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 ar putea avea nevoie vreodată 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.

Original text


Scurgeri de memorie în Windows 10