Prova per perdita di memoria

July 15

Prova per perdita di memoria


Un certo numero di modi disponibili per determinare se un programma per computer perde la memoria. Un programmatore può setacciare il codice sorgente per fare in modo che tutta la memoria allocata è stato deallocato, si può scrivere un programma che mette alla prova il suo software per perdite di memoria, si può escogitare un sistema di gestione della memoria che gli permette di tenere traccia di memoria utilizzata o lui è possibile utilizzare un programma di terze parti che mette alla prova per perdite di memoria.

Che cosa è una perdita di memoria?

Una perdita di memoria è un utilizzo della memoria indesiderato da un programma per computer, dove il programma alloca memoria per l'utilizzo e non riesce a rilasciare una volta la memoria non è più in uso. Questo pezzo di memoria non sarà più disponibile per il programma per computer. Un programma che perde abbastanza memoria nel tempo sufficiente può causare il sistema a corto di memoria disponibile, che può causare il sistema di programma o computer per sicuro. Perdite di memoria possono anche causare un sistema per rallentare ad una velocità insufficiente, a causa di botte memoria. I programmi che vengono eseguiti per lunghi periodi di tempo, eseguire molte allocazioni o allocare la memoria in grossi pezzi possono essere particolarmente inclini a perdite di memoria pericolose.

Utilizzare buone pratiche di codifica

Il modo migliore per garantire che il programma non perde la memoria è quello di scrivere buon codice che gestisce in modo appropriato le risorse del sistema. Assicurarsi che per ogni chiamata di funzione che alloca la memoria, c'è una corrispondente chiamata che rilascia la memoria. Alcuni linguaggi come Java, C #, VB.NET e, forniscono la raccolta dei rifiuti, in cui il sistema controlla regolarmente che la memoria allocata è ancora in uso. Mentre questi sistemi non impediscono completamente le perdite di memoria, è meno probabile che si verifichino. Altre lingue, come il C ++, consentono l'allocazione di stack, dove un pezzo di memoria viene deallocato automaticamente una volta che la variabile che fa riferimento va fuori del campo di applicazione. Usando la lingua corretta per l'attività e il mantenimento di buone pratiche di scrittura del software, molte perdite di memoria possono essere evitati del tutto.

Creare una Memory Manager

Alcuni programmi per computer richiedono così tanto codice per eseguire che la lettura attraverso il programma per trovare dove la memoria è trapelato non è semplicemente fattibile. In questi casi, può essere utile a dare una componente di gestore di memoria per il programma. Il software dovrebbe quindi avere un'interfaccia uniforme per l'assegnazione delle eventuali blocchi di memoria, e il direttore tiene traccia di dove e come questi pezzi sono assegnati. Nella sua forma più semplice, il manager si limita a fornire un feedback, che permette al programmatore di vedere la quantità di memoria utilizzata, e quali componenti lo usano. Essa può anche fornire la raccolta dei rifiuti e controllare come la memoria viene allocata e deallocata, dando un programmatore solo un posto per cercare perdite di memoria, invece di tutto il codice per l'intero programma.

Creare un programma di test

Si può spesso osservare la memoria utilizzata da un programma con uno strumento di sistema, come ad esempio il Task Manager di Windows o "top" su Unix / Linux per determinare se la memoria è trapelato. Questo non è sempre prova di una perdita di memoria, ma può fornire un feedback iniziale. A volte è possibile scrivere un semplice programma che verifica i vari componenti di un pezzo di software per determinare se la memoria perde. Il programma di test in grado di determinare in modo dinamico o essere data preventiva conoscenza della quantità di memoria di un programma per computer deve utilizzare. È quindi garantisce che la quantità usata è la quantità che deve essere utilizzato. Se si verifica una perdita di memoria, il programma di test fornisce un feedback su come quello che è successo, permettendo al programmatore di riparare la perdita.

Software di terze parti

I programmatori possono utilizzare molti programmi di terze parti e le librerie per verificare se il loro software perde la memoria. In Microsoft .NET Framework, si può abilitare il test perdita di memoria utilizzando le versioni di debug delle funzioni di allocazione di memoria. Su Linux, Unix e Mac, è possibile utilizzare strumenti, come Valgrind, dmalloc e Assicurare ++ per isolare una perdita di memoria. Molti debugger di memoria sono disponibili anche per Windows. Lo strumento migliore per il lavoro dipende dall'ambiente di sviluppo e il linguaggio utilizzato, così come le caratteristiche specifiche del programma per il debug, come la dimensione, requisiti di velocità e il modo in cui interagisce con il sistema. Ci sono molti strumenti tra cui scegliere, e possono essere un vantaggio per il programmatore frustrato stanco di cercare per l'ultima fuga sfuggente.