Trova e correggi le perdite di memoria in Windows 10

Una perdita di memoria è uno smarrimento di risorse in un programma per computer a causa di un'allocazione della memoria errata. Succede quando una posizione della 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 10/8/7 si sia verificata quando la memoria non è accessibile nonostante non sia in uso.

Perdite di memoria in Windows 10

Prima di iniziare, dovresti sapere che la perdita di memoria è un problema software di cui eseguire il debug, ad esempio in Java, JavaScript, C / C ++, Windows, ecc. Non è necessario sostituire fisicamente la RAM o il disco rigido.

Perdita di memoria in Windows 10

Perché è brutto

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

  1. Poiché la memoria non viene liberata anche quando non è in uso, ne risulta l'esaurimento.
  2. L'esaurimento della memoria provoca l'invecchiamento del software.
  3. La ridotta memoria disponibile comporta un aumento dei tempi di risposta e prestazioni scadenti del sistema.
  4. La 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 : determinare se si è verificata una perdita.
  2. Individuazione della perdita di memoria in modalità kernel : individuazione di una perdita causata da un componente del driver in modalità kernel.
  3. Individuazione di una perdita di memoria in modalità utente : individuazione di una perdita causata dal driver o dall'app in modalità utente.

Allocazione della memoria

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

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

Prevenire perdite di memoria

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. Puoi andare al Task Manager di Windows premendo CTRL + MAIUSC + ESC e aggiungere le colonne come Maniglie, Oggetti utente, Oggetti GDI, ecc.

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

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 degli strumenti di debug di Windows) diagnostica le perdite per i singoli processi monitorando le allocazioni di memoria dell'heap.
  3. Trace Capture per un'analisi approfondita dell'utilizzo della RAM.
  4. Anche Xperf tiene traccia dei modelli di allocazione dell'heap.
  5. Heap di debug CRT 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 gli HANDLE del kernel e altri puntatori intelligenti per le risorse Win32 e le allocazioni di heap.
  2. Ottieni classi per la gestione automatica delle risorse per le allocazioni del kernel dalla libreria ATL. Lo standard C ++ ha auto_ptr per le allocazioni di heap.
  3. Incapsula 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 il codice .NET per l'utilizzo anomalo della memoria.
  5. Evita più percorsi di uscita per le funzioni per liberare le allocazioni dalle variabili nella maggior parte dei blocchi entro la fine di una funzione.
  6. Utilizza le eccezioni native solo dopo aver liberato tutte le allocazioni nel blocco _finally. Racchiudi tutto l'heap e gestisci le allocazioni in puntatori intelligenti per utilizzare le eccezioni C ++.
  7. Chiamare sempre la funzione PropVariantClear prima di reinizializzare o eliminare un oggetto PROPVARIANT.

Risoluzione dei problemi relativi alle 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] Chiudere i processi e riavviare.

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'utilizzo da parte di altri processi. Senza un problema di perdita di memoria di riavvio non verrà risolto. Un particolare processo che presenta bug per rallentare il PC è Runtime Broker. Prova se disabilitare quello da solo funziona.

2] Strumenti di diagnostica della memoria

Diagnostica della memoria di Windows

Per accedere allo strumento di diagnostica della memoria integrato per Windows:

  1. Salva tutto il tuo lavoro importante.
  2. Premi Win + R per aprire la finestra Esegui .
  3. Digita il comando mdsched.exe nella finestra Esegui .
  4. Riavvia il PC.
  5. Dopo un riavvio, esegui una scansione di base o scegli le opzioni " Avanzate " come " Test mix " o " Conteggio passaggi ".
  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. Mantieni aggiornati tutti i driver:

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

Era semplice.

4] Ottimizza le prestazioni

Regola per ottenere le migliori prestazioni

La regolazione di Windows per le prestazioni 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 " e selezionare le impostazioni " Avanzate " nel riquadro di sinistra.
  2. Nella scheda " Avanzate ", vai a " Prestazioni ", seguito da " Impostazioni ".
  3. Seleziona " Regola per prestazioni migliori " e fai clic su OK .
  4. Riavvia e controlla se il problema è stato risolto.

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

5] Disabilita i programmi in esecuzione all'avvio

Programmi di avvio

Disabilitare i programmi fastidiosi è l'unico modo per eliminare il problema della perdita di memoria. Vai a Task Manager e disabilita il programma che crea problemi. Se non sai quali programmi stanno creando il problema, procedi come segue:

  1. Vai a " Task Manager ".
  2. Vai a " Avvio ".
  3. Disabilita i programmi di avvio che non è necessario eseguire per impostazione predefinita.

6] Defrag Hard Drive

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 " o " Risorse del computer ".
  2. Fare clic con il pulsante destro del mouse sul disco rigido del sistema (solitamente unità C:).
  3. Vai su " Strumenti " in " Proprietà " e seleziona " Ottimizza ".
  4. Seleziona l'unità da deframmentare e seleziona " Analizza ".

Riavvia il computer dopo la nuova frammentazione.

7] ClearPage File all'arresto

Le cose stanno diventando complesse ora, ma non preoccuparti. Ecco come cancellare il file di paging ad ogni arresto:

  • Digita regedit su Cerca per avviare l'Editor del Registro di sistema.
  • Inserisci questo percorso:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerGestione memoria
  • Modificare il valore di ClearPageFileAtShutDown su "1".
  • Salva le modifiche e riavvia il dispositivo.

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

9] Disabilita Superfetch

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

  1. Cerca services.msc e vai a Gestione servizi.
  2. Cerca " Superfetch " e fai clic con il pulsante destro del mouse per accedere a " Proprietà ".
  3. Seleziona " Stop ".
  4. Inoltre " Disabilita " il servizio dal menu a discesa.
  5. Riavvia il PC e controlla se le prestazioni sono migliorate.

Abilita Superfetch se questo non ha funzionato.

10] Verifica la presenza di malware

Utilizza un software antivirus di terze parti o Windows Defender interno di Windows 10 per eseguire la scansione ed eliminare il malware. Assicurati 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.

Original text


Perdite di memoria in Windows 10