Una perdita di memoria è un utilizzo della memoria indesiderato da un programma per computer , in cui il programma alloca la 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 di computer . Un programma che le perdite di memoria sufficiente nel corso del tempo sufficiente può causare il sistema a corto di memoria disponibile , che può causare il programma o del sistema informatico di fallire . Perdite di memoria possono causare anche un sistema per rallentare per una velocità insoddisfacente, a causa di thrashing memoria . I programmi che vengono eseguiti per lunghi periodi di tempo , svolgono molte allocazioni o allocare memoria in grossi pezzi può essere particolarmente inclini a perdite di memoria pericolose .
Usare buone pratiche di codifica
modo migliore per garantire che il vostro programma non è perdite di memoria è di scrivere buon codice che gestisce in modo appropriato le risorse del sistema . Assicurarsi che per ogni chiamata di funzione che alloca memoria, c'è una chiamata corrispondente che deallocazione memoria . Alcuni linguaggi come Java , C # e VB.NET , forniscono la raccolta dei rifiuti , in cui il sistema controlla regolarmente che la memoria allocata è ancora in uso . Mentre questi sistemi non impediscono del tutto le perdite di memoria , è meno probabile che si verifichi. Altri linguaggi , come C + + , consente l'assegnazione della pila , in cui un pezzo di memoria viene deallocato automaticamente una volta che la variabile che fa riferimento va fuori del campo di applicazione . Usando il linguaggio corretto per l'attività e il mantenimento di buone pratiche di scrittura del software , molte perdite di memoria possono essere evitati del tutto .
Creare un gestore di memoria
Alcuni computer di programmi richiedono tanto di codice da eseguire che la lettura attraverso il programma per trovare dove la memoria è trapelato non è semplicemente fattibile . In questi casi , può essere utile per inserire il componente gestore di memoria per il programma . Il software sarebbe quindi avere un'interfaccia uniforme per l'assegnazione eventuali blocchi di memoria , e il direttore tiene traccia di dove e come questi blocchi sono allocati . Nella sua forma più semplice , il gestore fornisce semplicemente feedback, permettendo al programmatore di vedere quanta memoria è utilizzata , e quali componenti si utilizza. Essa può anche fornire la raccolta dei rifiuti e il controllo come la memoria viene allocata e deallocato , dando solo un posto per cercare le perdite di memoria di un programmatore , invece di tutto il codice per l'intero programma .
Crea un programma di test
spesso si possono 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 la prova di una perdita di memoria , ma in grado di fornire un feedback iniziale . A volte è possibile scrivere un semplice programma che mette alla prova 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 delle quantità di memoria che un programma per computer deve utilizzare. E poi assicura che la quantità utilizzata è l'importo che dovrebbe essere usato . Se si verifica una perdita di memoria , il programma di test fornisce feedback su come sia successo , permettendo al programmatore di riparare la perdita .
Software di terzi
I programmatori possono utilizzare molti terzo parti di programmi e librerie per testare se il loro software è perdite di memoria . Nella . NET Framework di Microsoft , si può permettere di prova di perdita di memoria , utilizzando le versioni di debug delle funzioni di allocazione della 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 . Il migliore strumento per il lavoro dipende dall'ambiente sviluppo e il linguaggio utilizzato , nonché caratteristiche specifiche del programma per eseguire il debug , come le dimensioni , requisiti di velocità e loro modo di interagire con il sistema . Ci sono molti strumenti tra cui scegliere , e possono essere un vantaggio per il programmatore frustrato stanco di cercare quella ultima fuga inafferrabile .
hardware © www.354353.com