Homepage » finestre » Come trovare e correggere Memory Leaks in Windows 10/8/7

    Come trovare e correggere Memory Leaks in Windows 10/8/7

    UN Perdita di memoria è uno smarrimento di risorse in un programma per computer a causa di un'allocazione errata 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, è necessario 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é è cattivo

    È ovvio che una perdita di memoria è negativa perché è un bug, un difetto nel sistema. Ma scopriamo come influenza esattamente il sistema:

    1. Poiché la memoria non viene liberata anche quando non è in uso, si verifica un esaurimento della memoria.
    2. L'esaurimento della memoria comporta l'invecchiamento del software.
    3. La memoria disponibile ridotta porta ad un aumento del tempo di risposta e delle scarse prestazioni del sistema.
    4. Perdita di memoria non controllata può eventualmente portare al crash 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. Ricerca 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 RAM. Se lo spazio non viene liberato dopo l'uso, la perdita di memoria si verificherà indipendentemente dalla modalità di allocazione. Alcuni schemi di allocazione comuni sono:

    1. Funzione HealAlloc per l'allocazione della memoria heap. Gli equivalenti di runtime di 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.

    Prevenire perdite di memoria

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

    Abitudini di monitoraggio

    È necessario tenere d'occhio l'utilizzo anomalo della RAM da parte di programmi e applicazioni individuali. Puoi andare al Task Manager di Windows premendo CTRL + SHIFT + 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 assegnazione:

    1. Application Verifier diagnostica le perdite di heap.
    2. UMDH (un componente di Windows Debugging Tools) diagnostica le perdite per i singoli processi monitorando le allocazioni della 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. Debug CRT Heap non solo traccia le allocazioni dell'heap ma abilita anche le 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. Usa il kernel MANIGLIAs e altri puntatori intelligenti per risorse Win32 e allocazioni heap.
    2. Ottieni le classi per la gestione automatica delle risorse per le allocazioni del kernel dalla libreria ATL. Lo standard C ++ ha auto_ptr per allocazioni di heap.
    3. Incapsula 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 di uscita multipli per le funzioni affinché le allocazioni vengano liberate dalle variabili nella maggior parte dei blocchi entro la fine di una funzione.
    6. Utilizzare le eccezioni native solo dopo aver liberato tutte le allocazioni nel blocco _finally. Racchiudere tutti gli heap e gestire le allocazioni in puntatori intelligenti per utilizzare le eccezioni C ++.
    7. Chiama sempre il PropVariantClear funzione prima di reinizializzare o scartare un oggetto PROPVARIANT.

    Risoluzione dei problemi di perdite di memoria in Windows

    Proprio come i vari modi per prevenire 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 sta occupando 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 disabilitare ciò funziona da solo.

    2] Strumenti di diagnostica della memoria

    Per accedere allo strumento di diagnostica memoria integrato per Windows:

    1. Salva tutto il tuo lavoro importante.
    2. stampa Win + R per aprire il Correre finestra.
    3. Digita il comando MdSched.exe nel Correre finestra.
    4. Riavvia il PC.
    5. Dopo un riavvio, eseguire una scansione di base o andare per il 'Avanzate'opzioni come'Test mix' o 'Passa il conteggio'.
    6. stampa F10 per iniziare il test.

    Queste sono ancora correzioni temporanee.

    3] Controlla gli aggiornamenti del driver

    Driver obsoleti causano perdite di memoria. Mantieni tutti i driver aggiornati:

    1. stampa Win + R e apri il Correre finestra. genere devmgmt.msc e premere Invio. Ti porterà al Gestore dispositivi.
    2. Cerca driver obsoleti e aggiornali tutti.
    3. Per gli aggiornamenti che potresti aver perso, controlla Windows Update.

    Questo era 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 interrompere le perdite di memoria. Segui questi passi:

    1. Fai clic destro su 'Questo PC'e seleziona'Avanzate'impostazioni nel riquadro di sinistra.
    2. Sotto il 'Avanzate'scheda, vai a'Prestazione', seguito da 'impostazioni'.
    3. Dai un'occhiata 'Regola per ottenere le migliori prestazioni'e clicca 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 sai quali programmi stanno creando il problema, fai questo:

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

    6] Defrag Hard Drive

    Sebbene Windows 10 lo faccia automaticamente, potrebbe essere necessario eseguire la deframmentazione dei dischi rigidi occasionalmente per ottimizzare le prestazioni:

    1. Vai a 'Questo PC' o 'Il mio computer'.
    2. Fare clic con il pulsante destro del disco rigido del sistema (in genere C: unità).
    3. Vai a 'Utensili' sotto 'Proprietà'e seleziona'Ottimizzare'.
    4. Seleziona l'unità da deframmentare e seleziona 'Analizzare'.

    Riavvia il tuo computer dopo la nuova frammentazione.

    7] File ClearPage all'arresto

    Ora sta diventando complicato, ma non preoccuparti. Ecco come cancellare il file di paging ad ogni arresto:

    1. genere regedit su Cerca per avviare l'editor del registro.
    2. Inserisci questo percorso: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management
    3. Cambia il valore di ClearPageFileAtShutDown a '1'.
    4. Salva le modifiche e riavvia il dispositivo.

    Questo dovrebbe farlo.

    9] Disabilita Superfetch

    Questo servizio di 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. Ricerca services.msc e vai a Gestione servizi.
    2. Cercare 'Superfetch'e fai clic destro per andare a'Proprietà'.
    3. Seleziona 'Fermare'.
    4. Anche 'disattivare'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] Controlla il malware

    Utilizzare un software antivirus di terze parti o Windows Defender interno di Windows 10 per analizzare ed eliminare il malware. Assicurarsi che l'antivirus sia aggiornato per supportare il sistema operativo in modo che non diventi la ragione della perdita di memoria.

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