Trova e correggi le perdite di memoria in Windows 11/10

Una perdita di memoria(Memory Leak) è un'errata collocazione delle risorse in un programma per computer a causa di un'allocazione di memoria errata. Succede quando una posizione RAM non in uso rimane non rilasciata. Una perdita di memoria non deve essere confusa con una perdita di spazio, che si riferisce a un programma che utilizza più RAM del necessario. Si dice che una perdita di memoria su un sistema Windows 11/10/8/7 si sia verificata quando la memoria non è accessibile nonostante non sia in uso.

Perdite di memoria in Windows 11/10

Prima di iniziare, dovresti sapere che una perdita di memoria è un problema software di cui eseguire il debug, ad esempio in (Memory)Java , JavaScript , C/C++, Windows , ecc. Non è richiesta la sostituzione fisica della RAM o del disco rigido.

Perdita di memoria in Windows 10

Perché è cattivo

È ovvio che una perdita di memoria è dannosa perché è un bug, un difetto del sistema. Ma scopriamo come incide esattamente sul sistema:

  1. Poiché la memoria non viene liberata anche quando non è in uso, si traduce in un esaurimento della memoria.
  2. L'esaurimento della memoria provoca l'invecchiamento del software.
  3. La riduzione della memoria disponibile porta a un aumento dei tempi di risposta ea scarse prestazioni del sistema.
  4. Una perdita di memoria non controllata può eventualmente portare all'arresto anomalo di un'applicazione.

Per identificare una perdita di memoria, un programmatore deve avere accesso al codice sorgente del programma.

Individuazione della perdita

Per risolvere un problema, dobbiamo prima identificarlo. I passaggi di base per individuare una perdita di memoria sono:

  1. Affermazione(Affirmation) : Determinare se si è verificata una perdita.
  2. Individuazione di una perdita di memoria in modalità kernel(Finding Kernel-mode memory leak) : Individuazione di una perdita causata da un componente del driver in modalità kernel.
  3. Individuazione di una perdita di memoria in modalità utente(Finding User-mode memory leak) : Individuazione di una perdita causata da un driver o un'app in modalità utente.

Allocazione della memoria

Ci sono diverse modalità in cui le applicazioni allocano la RAM(RAM) . Se lo spazio non viene liberato dopo l'uso, la perdita di memoria si verificherà indipendentemente dalla modalità di allocazione. Alcuni modelli di allocazione comuni sono:

  1. Funzione HealAlloc(HealAlloc) per l'allocazione della memoria heap. Gli equivalenti di runtime C/C++ sono malloc e new.
  2. Funzione VirtualAlloc(VirtualAlloc) per l'allocazione diretta dal sistema operativo.
  3. API Kernel32(Kernel32 APIs) per conservare la memoria del kernel per l'app. Esempio(Example) , Crea(CreateFile) file , Crea thread(CreateThread) .
  4. API User32 e API Gdi32.

Prevenire perdite di memoria in Windows

Sappiamo tutti che prevenire è meglio che curare, quindi ecco alcuni modi per prevenire una perdita di memoria.

Monitoraggio delle abitudini

Perdite di memoria in Windows 10

È necessario tenere d'occhio l' utilizzo anomalo della RAM da parte di singoli programmi e applicazioni. (RAM)Puoi andare al Task Manager(Windows Task Manager) di Windows premendo CTRL+SHIFT+ESC e aggiungere le colonne come Handles , User Objects , GDI Objects , ecc.

Questo ti aiuterà a monitorare facilmente l'utilizzo delle risorse.

Leggi(Read) : Quali sono i tipi di memoria in un computer?(What are the Types of Memory in a computer?)

(Microsoft)Strumenti Microsoft per diagnosticare le perdite di memoria

Vari strumenti diagnosticano le perdite di memoria per varie modalità di allocazione:

  1. Application Verifier diagnostica le perdite di heap.
  2. UMDH (un componente di Strumenti di debug di Windows(Windows Debugging Tools) ) diagnostica le perdite per i singoli processi monitorando le allocazioni di memoria heap.
  3. Trace Capture per un'analisi approfondita dell'utilizzo della RAM .
  4. Anche Xperf tiene traccia dei modelli di allocazione dell'heap.
  5. CRT Debug Heap non solo tiene traccia delle allocazioni di heap, ma consente anche pratiche di codifica per ridurre al minimo le perdite.
  6. JavaScript Memory Leak Detector esegue il debug delle perdite di memoria nei codici.

Suggerimenti per l'uso

  1. Utilizzare kernel HANDLE se altri puntatori intelligenti per risorse Win32 e allocazioni di heap.
  2. Ottieni(Get) classi per la gestione automatica delle risorse per le allocazioni del kernel dalla libreria ATL . Lo standard C++ ha auto_ptr per le allocazioni dell'heap.
  3. Incapsula(Encapsulate COM) i puntatori dell'interfaccia COM all'interno di "puntatori intelligenti" con l'aiuto di _com_ptr_t o _bstr_t o _variant_t .
  4. Monitorare(Monitor) il codice .NET per l'utilizzo anomalo della memoria.
  5. Evita(Avoid) più percorsi di uscita per le funzioni per consentire che le allocazioni vengano liberate dalle variabili nella maggior parte dei blocchi entro la fine di una funzione.
  6. Usa(Use) le eccezioni native solo dopo aver liberato tutte le allocazioni nel blocco _finally . Avvolgi(Wrap) tutto l'heap e gestisci le allocazioni in puntatori intelligenti per usare le eccezioni C++.
  7. Chiamare sempre la funzione PropVariantClear prima di reinizializzare o eliminare un oggetto PROPVARIANT .

Risolvere(Troubleshoot) le perdite di memoria in Windows

Proprio come i vari modi per prevenire le perdite di memoria, ci sono vari modi per fermare le perdite di memoria. Ma prima di iniziare, ricorda di creare prima un punto di ripristino del sistema .

1] Chiudi i processi e riavvia.

Se vedi che un processo non necessario occupa troppa RAM , puoi terminare il processo nel Task Manager . Sarà necessario riavviare il dispositivo in modo che lo spazio liberato sia disponibile per l'uso da parte di altri processi. Senza un problema di perdita di memoria di riavvio(Restart) non sarà risolto. Un processo particolare che ha bug per rallentare il PC è Runtime Broker . Prova se disabilitarlo da solo funziona.

2] Strumenti di diagnostica della memoria

Diagnostica della memoria di Windows

Per accedere allo strumento di diagnostica della memoria(Memory Diagnostic Tool) integrato per Windows:

  1. Salva tutto il tuo lavoro importante.
  2. Premi Win + R per aprire la finestra Esegui .(Run)
  3. Digitare il comando mdsched.exe nella finestra Esegui(Run) .
  4. Riavvia il PC.
  5. Dopo un riavvio, esegui una scansione di base o scegli le opzioni " Avanzate(Advanced) " come " Mix test(Test mix) " o " Conteggio passaggi(Pass count) ".
  6. Premere F10 per avviare il test.

Queste sono ancora soluzioni temporanee.

3] Controlla gli aggiornamenti del driver

Aggiorna il software del driver

I driver obsoleti causano perdite di memoria. Tieni aggiornati tutti i driver :

  1. Premi Win + R e apri la finestra Esegui . (Run)Digita devmgmt.msc e premi Invio(Enter) . Ti porterà a Gestione dispositivi(Device Manager) .
  2. Verifica(Check) la presenza di driver obsoleti e aggiornali tutti.
  3. Per gli aggiornamenti che potresti aver perso, controlla Windows Update .

Questo era semplice.

4] Ottimizza le prestazioni

Regola per ottenere le migliori prestazioni

La regolazione delle prestazioni di Windows gestirà tutto, inclusa la pianificazione del processore e l'utilizzo della memoria per fermare le perdite di memoria. Segui questi passi:

  1. Fare clic con il pulsante destro del mouse su " Questo PC(This PC) " e selezionare le impostazioni " Avanzate(Advanced) " nel riquadro di sinistra.
  2. Nella scheda " Avanzate(Advanced) ", vai su " Prestazioni(Performance) ", seguito da " Impostazioni(Settings) ".
  3. Seleziona " Regola per prestazioni migliori(Adjust for best performance) " e fai clic su OK .
  4. Riavvia(Restart) e controlla se il problema è stato risolto.

Se questa semplice soluzione non ha funzionato, prova la soluzione successiva.

5] Disabilita i programmi(Programs) in esecuzione all'avvio(Startup)

Programmi di avvio

Disabilitare i programmi problematici è l'unico modo per sbarazzarsi del problema della perdita di memoria. Vai su Task Manager e disabilita il programma di risoluzione dei problemi. Se non sai quali programmi stanno creando il problema, procedi in questo modo:

  1. Vai a ' Gestione attività(Task Manager) '.
  2. Vai a ' Avvio(Startup) '.
  3. Disabilita i programmi di avvio(Disable the startup programs) che non è necessario eseguire per impostazione predefinita.

6] Deframmenta disco rigido

Deframmentazione del disco

Sebbene Windows 10 lo faccia automaticamente, potrebbe essere necessario deframmentare i dischi rigidi occasionalmente per ottimizzare le prestazioni:

  1. Vai a ' Questo PC(This PC) ' o ' Il mio computer(My Computer) '.
  2. Fare clic con(Right-Click) il tasto destro del mouse sul disco rigido del sistema (di solito C: drive).
  3. Vai su ' Strumenti(Tools) ' sotto ' Proprietà(Properties) ' e seleziona ' Ottimizza(Optimize) '.
  4. Seleziona l'unità da deframmentare e seleziona ' Analizza(Analyze) '.

Riavvia il computer dopo la nuova frammentazione.

7] ClearPage File allo spegnimento

Ora sta diventando complesso, ma non preoccuparti. Ecco come cancellare il file di paging ad ogni spegnimento(clear the Page File at every shutdown) :

  • Digita regedit su Cerca(Search) per avviare l' editor del registro(Registry Editor) .
  • Inserisci questo percorso:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  • Modificare il valore di ClearPageFileAtShutDown su '1'.( ClearPageFileAtShutDown to ‘1’.)
  • Salva le modifiche e riavvia(Restart) il dispositivo.

Questo dovrebbe farlo. Ricorda che il processo di spegnimento richiederà un po' più di tempo.

9] Disabilita Superfetch

Questo servizio Windows(Windows Service) ottimizza le prestazioni riducendo al minimo il tempo di avvio. Consente a Windows di gestire l'utilizzo della RAM . (RAM)La vita(Life) dopo aver disabilitato Superfetch non è conveniente, ma fallo se necessario. Almeno prova questo da solo per isolare il problema:

  1. Cerca services.msc e vai a Services Manager.
  2. Cerca " Superfetch " e fai clic con il pulsante destro del mouse per andare su " Proprietà(Properties) ".
  3. Seleziona ' Stop '.
  4. Inoltre ' Disabilita(Disable) ' il servizio dal menu a tendina.
  5. Riavvia il PC e controlla se le prestazioni sono migliorate.

Abilita Superfetch se questo non ha funzionato.

10] Verifica la presenza di malware

Usa un software antivirus di terze parti o Windows Defender interno di Windows 10 per scansionare ed eliminare il malware. Assicurati(Make) che l'antivirus sia aggiornato per supportare il tuo sistema operativo in modo che non finisca per diventare il motivo della perdita di memoria.

Ogni soluzione di cui potresti aver bisogno per trovare o prevenire perdite di memoria è proprio qui. Puoi leggere ulteriori informazioni sulle perdite di memoria su MSDN e Microsoft .



About the author

Sono uno sviluppatore web con esperienza di lavoro sia con Windows 11 che con Windows 10. Sono anche un utente di Firefox da molti anni e sono diventato abbastanza abile nell'uso della nuovissima console di gioco Xbox One. I miei interessi principali risiedono nello sviluppo di software, in particolare nello sviluppo web e mobile, nonché nella scienza dei dati. Sono molto ben informato sui vari sistemi informatici e sul loro utilizzo, quindi posso fornire un feedback imparziale su vari programmi o servizi che potresti utilizzare.



Related posts