Cum să găsiți și să remediați pierderile de memorie în Windows 10/8/7
A Pierdere de memorie reprezintă o greșeală de plasare a unei resurse într-un program de calculator datorită alocării greșite a memoriei. Se întâmplă atunci când o locație RAM care nu este utilizată rămâne nesoluționată. O scurgere de memorie nu trebuie confundată cu o scurgere de spațiu, care se referă la un program care utilizează mai multă memorie 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ă în ciuda faptului că nu este utilizată.
Pierderi de memorie în Windows 10
Înainte de a începe, trebuie să știți că scurgerea de memorie este o problemă software de depanat - de exemplu în Java, JavaScript, C / C ++, Windows etc. Înlocuirea fizică a RAM sau hard disk nu este necesară.
De ce e rău
Este evident că o scurgere de memorie este rău pentru că este o eroare, un defect în sistem. Dar să aflăm exact cum afectează sistemul:
- Deoarece memoria nu este eliberată chiar și atunci când nu este utilizată, aceasta duce la epuizarea memoriei.
- Epuizarea memoriei duce la îmbătrânirea software-ului.
- Memoria disponibilă redusă duce la creșterea timpului de răspuns și la o performanță slabă a sistemului.
- Neclaritatea scurgerilor de memorie poate duce la accidentele unei aplicații.
Pentru a identifica o scurgere de memorie, un programator trebuie să aibă acces la codul sursă al programului.
Localizarea scurgerilor
Pentru a rezolva o problemă, trebuie să o identificăm mai întâi. Pașii de bază pentru a găsi o scurgere de memorie sunt:
- Afirmare: Determinarea faptului dacă a avut loc o scurgere.
- Găsirea unei scurgeri de memorie în modul Kernel: Localizarea unei scurgeri cauzate de o componentă de driver a modului kernel.
- Găsirea de scurgere a memoriei în modul de utilizare: Localizarea unei scurgeri cauzate de driverul sau aplicația în modul de utilizare.
Alocare de memorie
Există moduri diferite în care aplicațiile alocă RAM. Dacă spațiul nu este eliberat după utilizare, scurgeri de memorie vor apărea indiferent de modul de alocare. Unele modele comune de alocare sunt:
- Funcția HealAlloc pentru alocarea memoriei heap. Ciclurile C / C ++ echivalente sunt malloc și noi.
- Funcția VirtualAlloc pentru alocarea directă de la sistemul de operare.
- Kernel32 API-uri pentru a ține memoria kernel-ului pentru aplicație. Exemplu, CreateFile, CreateThread.
- API-urile User32 și API-urile Gdi32.
Prevenirea pierderilor de memorie
Știm cu toții că prevenirea este mai bine decât vindecarea, așa că sunt câteva modalități de a preveni scurgerea memoriei.
Obiceiuri de monitorizare
Trebuie să țineți cont de utilizarea anormală a RAM de către programele și aplicațiile individuale. Puteți să accesați Windows Task Manager apăsând CTRL + SHIFT + ESC și adăugați coloanele cum ar fi mânere, obiecte utilizator, obiecte GDI etc..
Acest lucru vă va ajuta să monitorizați cu ușurință utilizarea resurselor.
Instrumente Microsoft pentru a diagnostica scurgeri de memorie
Diverse instrumente detectează scurgeri de memorie pentru diferite moduri de alocare:
- Verificatorul de aplicații detectează scurgeri de heap.
- UMDH (o componentă a instrumentelor de depanare Windows) diagnostichează scurgerile pentru procesele individuale prin monitorizarea alocărilor de memorie heap.
- Trace Capture pentru o analiză aprofundată a utilizării RAM.
- Xperf urmărește prea multe modele de alocare a heapului.
- CRT Debug Heap nu numai că urmărește alocările de heap, dar și permite practicile de codificare pentru a minimiza scurgerile.
- Detectorul de pierderi de memorie JavaScript depanează scurgeri de memorie în coduri.
Sfaturi de utilizare
- Utilizați kernel-ul MÂNERs și alte astfel de pointeri inteligenți pentru resursele Win32 și alocările de heap.
- Obțineți cursuri pentru gestionarea automată a resurselor pentru alocările kernel-ului din biblioteca ATL. Standardul C ++ are auto_ptr pentru alocările de heap.
- Încapsulați indicatorii de interfață COM în cadrul "indicatorilor inteligenți" cu ajutorul _com_ptr_t sau _bstr_t sau _variant_t.
- Monitorizați codul .NET pentru utilizarea anormală a memoriei.
- Evitați căile multiple de ieșire pentru funcții, pentru a permite ca alocările să fie eliberate de variabile în majoritatea blocurilor până la sfârșitul unei funcții.
- Utilizați excepțiile native numai după eliberarea tuturor alocărilor în blocul _final. Împachetați toate alocările de morman și mâner în indicii inteligenți pentru a utiliza excepții C ++.
- Întotdeauna apelați PropVariantClear înainte de reinitializarea sau aruncarea unui obiect PROPVARIANT.
Depanarea pierderilor de memorie în Windows
La fel ca diferitele modalități de a preveni scurgeri de memorie, există diferite modalități de a opri scurgerea memoriei.
1] Închideți procesele și reporniți.
Dacă vedeți că un proces inutil necesită prea multă memorie RAM, puteți termina procesul în Managerul de activități. Va trebui să reporniți dispozitivul astfel încât spațiul liber să fie disponibil pentru alte procese. Fără o problemă de reluare a problemei de scurgere a memoriei nu va fi rezolvată. Un proces special care are bug-uri pentru a încetini PC-ul este Runtime Broker. Încercați dacă dezactivarea funcționează singură.
2] Instrumente de diagnosticare a memoriei
Pentru a accesa instrumentul de diagnosticare a memoriei încorporat pentru Windows:
- Salvați toate lucrările importante.
- presa Win + R pentru a deschide Alerga fereastră.
- Tastați comanda mdsched.exe în Alerga fereastră.
- Reporniți PC-ul.
- După o repornire, efectuați o scanare de bază sau mergeți la "Avansat"opțiuni precum"Mix de testare"sau"Numărul de concediu'.
- presa F10 pentru a începe testul.
Acestea sunt în continuare remedii temporare.
3] Verificați Actualizări pentru drivereDescoperă driverele provoacă scurgeri de memorie. Păstrați toate driverele actualizate:
- presa Win + R și deschideți Alerga fereastră. Tip devmgmt.msc și apăsați Enter. Vă va duce la Manager de dispozitiv.
- Verificați driverele învechite și actualizați-le pe toate.
- Pentru actualizări pe care le-ați pierdut, consultați Windows Update.
A fost simplu.
4] Optimizați performanța
Ajustarea Windows pentru performanță va gestiona totul, inclusiv programarea procesorului și utilizarea memoriei pentru a opri scurgeri de memorie. Urmați acești pași:
- Faceți clic dreapta pe "Acest PC"și selectați"Avansat"din panoul din stânga.
- Sub 'Avansat", accesați"Performanţă', urmat de 'Setări'.
- Verifica 'Reglați pentru cea mai bună performanță'și faceți clic pe O.K.
- 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 dificile este singura modalitate de a scăpa de problema de scurgere de memorie. Mergeți la Manager de activități și dezactivați programul de probleme. Dacă nu știți ce programe creează problema, procedați astfel:
- Mergi la 'Gestionar de sarcini'.
- Mergi la 'Lansare'.
- Dezactivați programele de pornire pe care nu este nevoie să le executați în mod implicit.
6] Defrag Hard Drive
Deși Windows 10 face acest lucru pentru dvs. în mod automat, poate fi necesar să defragați uneori hard-disk-urile pentru a optimiza performanța:
- Mergi la 'Acest PC"sau"Calculatorul meu'.
- Faceți clic dreapta pe hard disk-ul sistemului (de obicei C: drive).
- Mergi la 'Unelte' sub 'Proprietăți"și selectați"Optimizarea'.
- Selectați unitatea pentru defragmentare și selectați "A analiza'.
Reporniți computerul după noua fragmentare.
7] Fișier ClearPage la închidere
Acum devine complexă - dar nu vă faceți griji. Iată cum puteți șterge fișierul Pagină la fiecare oprire:
- Tip regedit pe Căutare pentru a lansa Editorul de Regiștri.
- Introduceți această cale: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagementul memoriei
- Modificați valoarea ClearPageFileAtShutDown la '1'.
- Salvați modificările și reporniți dispozitivul.
Ar trebui să o facă.
9] Dezactivați Superfetch
Acest serviciu Windows optimizează performanța prin minimizarea timpului de încărcare. Permite Windows să gestioneze utilizarea RAM. Viața după dezactivarea programului Superfetch nu este convenabilă, dar o faceți dacă trebuie. Cel puțin încercați acest lucru singur pentru a izola problema:
- Căutare services.msc și accesați Managerul de servicii.
- Cauta 'SuperFetch'și faceți clic dreapta pe el pentru a merge la'Proprietăți'.
- Selectați 'Stop'.
- De asemenea 'Dezactivați'serviciul din meniul derulant.
- Reporniți PC-ul și verificați dacă performanța sa îmbunătățit.
Activați Superfetch dacă aceasta nu a funcționat.
10] Verificați dacă există programe malware
Utilizați un software antivirus terț sau Windows Defender din Windows 10 pentru a scana și elimina programele malware. Asigurați-vă că antivirusul este actualizat pentru a vă susține sistemul de operare, astfel încât acesta să nu devină cauza motivului pentru scurgerea memoriei.
Fiecare soluție pe care ați putea avea vreodată nevoie să găsiți sau să împiedicați scurgerile de memorie este chiar aici. Puteți citi mai multe despre scurgeri de memorie pe MSDN și Microsoft.