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.
Perché è cattivo
È ovvio che una perdita di memoria è dannosa perché è un bug, un difetto del sistema. Ma scopriamo come incide esattamente sul sistema:
- Poiché la memoria non viene liberata anche quando non è in uso, si traduce in un esaurimento della memoria.
- L'esaurimento della memoria provoca l'invecchiamento del software.
- La riduzione della memoria disponibile porta a un aumento dei tempi di risposta ea scarse prestazioni del sistema.
- 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:
- Affermazione(Affirmation) : Determinare se si è verificata una perdita.
- 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.
- 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:
- Funzione HealAlloc(HealAlloc) per l'allocazione della memoria heap. Gli equivalenti di runtime C/C++ sono malloc e new.
- Funzione VirtualAlloc(VirtualAlloc) per l'allocazione diretta dal sistema operativo.
- API Kernel32(Kernel32 APIs) per conservare la memoria del kernel per l'app. Esempio(Example) , Crea(CreateFile) file , Crea thread(CreateThread) .
- 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
È 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:
- Application Verifier diagnostica le perdite di heap.
- 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.
- Trace Capture per un'analisi approfondita dell'utilizzo della RAM .
- Anche Xperf tiene traccia dei modelli di allocazione dell'heap.
- CRT Debug Heap non solo tiene traccia delle allocazioni di heap, ma consente anche pratiche di codifica per ridurre al minimo le perdite.
- JavaScript Memory Leak Detector esegue il debug delle perdite di memoria nei codici.
Suggerimenti per l'uso
- Utilizzare kernel HANDLE se altri puntatori intelligenti per risorse Win32 e allocazioni di heap.
- 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.
- 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 .
- Monitorare(Monitor) il codice .NET per l'utilizzo anomalo della memoria.
- 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.
- 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++.
- 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
Per accedere allo strumento di diagnostica della memoria(Memory Diagnostic Tool) integrato per Windows:
- Salva tutto il tuo lavoro importante.
- Premi Win + R per aprire la finestra Esegui .(Run)
- Digitare il comando mdsched.exe nella finestra Esegui(Run) .
- Riavvia il PC.
- Dopo un riavvio, esegui una scansione di base o scegli le opzioni " Avanzate(Advanced) " come " Mix test(Test mix) " o " Conteggio passaggi(Pass count) ".
- Premere F10 per avviare il test.
Queste sono ancora soluzioni temporanee.
3] Controlla gli aggiornamenti del driver
I driver obsoleti causano perdite di memoria. Tieni aggiornati tutti i driver :
- Premi Win + R e apri la finestra Esegui . (Run)Digita devmgmt.msc e premi Invio(Enter) . Ti porterà a Gestione dispositivi(Device Manager) .
- Verifica(Check) la presenza di driver obsoleti e aggiornali tutti.
- Per gli aggiornamenti che potresti aver perso, controlla Windows Update .
Questo era semplice.
4] Ottimizza le 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:
- Fare clic con il pulsante destro del mouse su " Questo PC(This PC) " e selezionare le impostazioni " Avanzate(Advanced) " nel riquadro di sinistra.
- Nella scheda " Avanzate(Advanced) ", vai su " Prestazioni(Performance) ", seguito da " Impostazioni(Settings) ".
- Seleziona " Regola per prestazioni migliori(Adjust for best performance) " e fai clic su OK .
- 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)
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:
- Vai a ' Gestione attività(Task Manager) '.
- Vai a ' Avvio(Startup) '.
- Disabilita i programmi di avvio(Disable the startup programs) che non è necessario eseguire per impostazione predefinita.
6] Deframmenta disco rigido
Sebbene Windows 10 lo faccia automaticamente, potrebbe essere necessario deframmentare i dischi rigidi occasionalmente per ottimizzare le prestazioni:
- Vai a ' Questo PC(This PC) ' o ' Il mio computer(My Computer) '.
- Fare clic con(Right-Click) il tasto destro del mouse sul disco rigido del sistema (di solito C: drive).
- Vai su ' Strumenti(Tools) ' sotto ' Proprietà(Properties) ' e seleziona ' Ottimizza(Optimize) '.
- 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:
- Cerca services.msc e vai a Services Manager.
- Cerca " Superfetch " e fai clic con il pulsante destro del mouse per andare su " Proprietà(Properties) ".
- Seleziona ' Stop '.
- Inoltre ' Disabilita(Disable) ' il servizio dal menu a tendina.
- 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 .
Related posts
Come aprire e leggere i file Small Memory Dump (DMP) in Windows 10
Come eseguire Windows Memory Diagnostics Tool in Windows 11/10
Come aumentare Page File size o memoria virtuale in Windows 10
Come creare manualmente un Crash Dump file in Windows 10
Explorer.exe High Memory or CPU usage in Windows 10
Come aumentare la Video RAM dedicata in Windows 11/10
Set Notepad++ come default editor per i file .xml in Windows 11/10
Cos'è uno PLS file? Come creare uno PLS file in Windows 11/10?
Dispositivo HDMI playback non mostrabile in Windows 10
Come eseguire il backup, Move, o Delete PageFile.sys allo spegnimento in Windows 10
Adjust tua Monitor per una migliore screen resolution in Windows 10
Qual è lo Windows.edb file in Windows 10
Taskbar notifiche non mostrando in Windows 10
Fix Microsoft Edge High Memory Usage in Windows 10
Le impostazioni di sincronizzazione di Windows 10 non funzionano in grigio
Come misurare Reaction Time in Windows 11/10
CPU non è in esecuzione a pieno speed or capacity in Windows 11/10
Come utilizzare gli strumenti incorporati Charmap and Eudcedit di Windows 10
Fix Crypt32.dll non trovato o errore mancante in Windows 11/10
Best GRATIS Timetable software per Windows 11/10