Ufficio

Trovare e correggere le perdite di memoria in Windows 10/8/7

Hard Disk esterno non riconosciuto o danneggiato? Cosa fare!

Hard Disk esterno non riconosciuto o danneggiato? Cosa fare!

Sommario:

Anonim

Una perdita di memoriaè un errato posizionamento di risorse in un programma per computer a causa di una errata allocazione della memoria. Succede quando una locazione RAM non in uso rimane inutilizzata. 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 abbia avuto luogo 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 di software per il debug - ad esempio in Java, JavaScript, C / C ++, Windows, ecc. Non è necessaria la sostituzione fisica della RAM o del disco rigido.

Perché è brutto

È ovvio un ricordo la perdita è cattiva perché è un bug, un difetto nel sistema. Ma scopriamo in che modo influenza esattamente il sistema:

  1. Poiché la memoria non viene liberata anche quando non è in uso, ne risulta l`esaurimento della memoria.
  2. l`esaurimento della memoria determina l`invecchiamento del software.
  3. Memoria disponibile ridotta
  4. La perdita di memoria non verificata può portare al crash di un`applicazione.

Per identificare una perdita di memoria, un programmatore deve avere accesso al codice sorgente di il 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. Trovare la perdita di memoria in modalità kernel : Individuazione di una perdita causata da un componente driver in modalità kernel.
  3. Ricerca perdita di memoria in modalità utente : individuazione di una perdita causata dal driver o dall`app in modalità utente.

Allocazione memoria

Esistono diverse modalità in cui le applicazioni allocano la 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 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 conservare la memoria del kernel per l`app. Esempio, CreateFile, CreateThread.
  4. API User32 e API Gdi32.

Prevenzione di perdite di memoria

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

Monitoraggio abitudini

È necessario tenere d`occhio l`utilizzo anomalo della RAM da parte di programmi e applicazioni individuali. Puoi andare a Task Manager di Windows premendo CTRL + MAIUSC + ESC e aggiungi le colonne come Gestori, Oggetti utente, Oggetti GDI, ecc.

Ciò ti aiuterà a monitorare facilmente l`utilizzo delle risorse.

Strumenti Microsoft per diagnosticare perdite di memoria

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

  1. Application Verifier diagnostica le perdite di heap.
  2. UMDH (un componente di Windows Debugging Tools) diagnostica le perdite per singoli processi monitorando le allocazioni della memoria heap.
  3. Trace Capture per un`analisi approfondita dell`uso della RAM.
  4. Anche Xperf traccia i modelli di allocazione dell`heap.
  5. Debug CRT Heap non solo traccia le allocazioni dell`heap ma abilita anche le pratiche di codifica per ridurre al minimo le perdite.
  6. Perdita di memoria JavaScript Il rilevatore esegue il debug delle perdite di memoria nei codici.

Suggerimenti di utilizzo

  1. Usa kernel HANDLE s e altri puntatori intelligenti per risorse Win32 e allocazioni heap.
  2. Ottieni classi per la gestione automatica delle risorse per allocazioni kernel da la libreria ATL. Lo standard C ++ ha auto_ptr per l`allocazione dell`heap.
  3. Encapsula i puntatori di interfaccia COM all`interno di "puntatori intelligenti" con l`aiuto di _com_ptr_t o _bstr_t o _variant_t .
  4. Monitora il codice.NET per l`utilizzo anomalo della memoria.
  5. Evita percorsi multipli di uscita per consentire alle allocazioni di essere liberate dalle variabili nella maggior parte dei blocchi entro la fine di una funzione.
  6. Utilizza solo eccezioni native dopo aver liberato tutte le allocazioni nel blocco _finalmente. Racchiudere tutti gli heap e gestire le allocazioni in puntatori intelligenti per utilizzare le eccezioni C ++.
  7. Chiamare sempre la funzione PropVariantClear prima di reinizializzare o scartare un oggetto PROPVARIANT.

Risoluzione dei problemi di memoria in Windows

Proprio come i vari modi per evitare perdite di memoria, ci sono vari modi per fermare le perdite di memoria.

1] Chiudi 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`utilizzo da parte di altri processi. Senza un problema di perdita di memoria di riavvio non verrà risolto. Un particolare processo che ha dei bug per rallentare il PC è Runtime Broker. Prova se disabilita quello da solo.

2] Strumenti di diagnostica memoria

Per accedere allo strumento di diagnostica memoria integrato per Windows:

  1. Salva tutti i tuoi lavori importanti.
  2. Premi Win + R per aprire la finestra Esegui .
  3. Digitare il comando mdsched.exe nella finestra Esegui .
  4. Riavvia il PC.
  5. Dopo un riavviare, eseguire una scansione di base o selezionare le opzioni ` Avanzate ` come ` Test mix ` o ` Conteggio passaggi `.
  6. Premere F10 per avviare il test.

Queste sono ancora correzioni temporanee.

3] Verifica aggiornamenti driver

I driver obsoleti causano perdite di memoria. Aggiornamento di tutti i driver:

  1. Premere Win + R e aprire la finestra Esegui . Digitare devmgmt.msc e premere Invio. Verrai indirizzato al Device Manager .
  2. Verifica i driver obsoleti e aggiornali tutti.
  3. Per gli aggiornamenti che potresti aver perso, controlla Windows Update.

È stato semplice.

4] Ottimizza le prestazioni

La regolazione di Windows per le prestazioni gestirà tutto, compresa la pianificazione del processore e l`utilizzo della memoria per arrestare le perdite di memoria. Segui questi passaggi:

  1. Fai clic con il pulsante destro del mouse su " Questo PC " e seleziona " Avanzate " nel riquadro sinistro.
  2. Sotto Avanzate "scheda, vai a" Prestazioni ", seguito da" Impostazioni ".
  3. Verifica" Regola per prestazioni ottimali "e fai clic su OK .
  4. Riavvia e controlla se il problema è risolto.

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

5] Disattiva i programmi in esecuzione all`avvio

Disabilitare i programmi fastidiosi è l`unico modo per sbarazzarsi del problema di perdita di memoria. Vai a Task Manager e disabilita il programma di troublemaking. Se non si conoscono i programmi che creano il problema, procedere come segue:

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

6] Deframmentazione disco rigido

Anche se Windows 10 esegue automaticamente questa operazione, potrebbe essere necessario eseguire la deframmentazione dei dischi rigidi occasionalmente per ottimizzare le prestazioni:

  1. Andare a ` Questo PC ` o ` Risorse del computer `.
  2. Fare clic con il pulsante destro sul disco rigido del sistema (in genere C: unità).
  3. Vai a ` Strumenti `sotto` Proprietà `e selezionare` Ottimizza `.
  4. Selezionare l`unità da deframmentare e selezionare` Analizza `.

Riavvia il tuo computer dopo la nuova frammentazione.

7] ClearPage File allo spegnimento

Sta diventando complesso ora - ma non preoccuparti. Ecco come cancellare il file di paging ad ogni spegnimento:

  1. Scrivi regedit su Cerca per avviare l`editor del registro.
  2. Inserisci questo percorso: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
  3. Modifica il valore di ClearPageFileAtShutDown su "1".
  4. Salva le modifiche e riavvia il dispositivo.

Questo dovrebbe farlo.

9] Disattiva Superfetch

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

  1. Cerca services.msc e vai a Gestione servizi.
  2. Cerca ` Superfetch ` e fai clic destro per andare a ` Proprietà `.
  3. Seleziona ` Stop `.
  4. Anche ` Disattiva ` 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] Controllo malware

Utilizzare 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 sistema operativo in modo che non diventi la causa della perdita di memoria.

Ogni soluzione che potresti mai dover trovare o prevenire perdite di memoria è proprio qui. È possibile leggere ulteriori informazioni sulle perdite di memoria su MSDN e Microsoft.