Strumenti per trovare una perdita di memoria

May 27

Strumenti per trovare una perdita di memoria


Quando un programma per computer ha bisogno di memorizzare le informazioni, in primo luogo bisogno di allocare memoria. Dopo che i dati non è più necessario, il programma rilascia la memoria in modo che un altro programma può fare uso di esso. Se un programma alloca memoria senza deallocando la memoria in seguito, il programma diventerà un salasso per le risorse di sistema. Questi insetti sono chiamati "perdite di memoria" e sbarazzarsi di loro è una parte importante di debug.

Processo

Indipendentemente dalla lingua del programma è scritto in, il processo di base per la ricerca di perdite di memoria è la stessa. In primo luogo, la perdita di memoria deve essere rilevato. Una perdita di memoria è di solito indicato da linearmente crescente utilizzo della memoria, anche se alcuni strumenti specializzati possono dire direttamente la quantità di memoria che un programma è allocato o deallocato. Una volta rilevata una perdita di memoria che deve essere isolato. Questo viene fatto testando ogni funzione o di un oggetto separatamente per determinare dove la perdita si sta verificando. Poi il programmatore deve capire l'errore specifico che sta causando la perdita e correggerlo.

C / C ++

I programmi scritti in C e C ++ sono noti per avere perdite di memoria, perché l'utente deve allocare manualmente e deallocare memoria usando il comando malloc. Lo strumento ccmalloc controlla la funzione malloc e le relazioni ciò che la memoria non è stato deallocato, è stato deallocato più volte o anche assegnati senza essere stati deallocato in primo luogo. ( "Non è solo un altro Malloc Debugger") esistono anche altri programmi più specializzati come NJAMD per la ricerca di perdite di memoria in C e C ++.

MSDN

Gli sviluppatori che utilizzano l'ambiente di sviluppo di Microsoft possono utilizzare il comando ml per trovare le perdite di memoria. Digitando ml al prompt CESH, si apre un elenco di ogni applicazione in esecuzione e la quantità di memoria che viene utilizzato, scritto come "r / w =" seguito dal numero di pagine che applicazione ha assegnati. aumento imprevisto nell'utilizzo della memoria indicano che l'applicazione ha una perdita di memoria.

Giava

Molti programmatori pensano che i programmi Java sono immuni da perdite di memoria, perché il programmatore non è responsabile per l'allocazione e deallocazione di memoria, ma lo fanno ancora affiorano. Java virtual machine, l'ambiente che implementa i programmi Java, ha un collector automatico di spazzatura che rilascia la memoria quando non è più referenziato da altre classi. Le perdite di memoria si possono verificare quando la memoria è fatto riferimento quando è più necessario, inducendolo a essere saltato dal garbage collector. JProbe è un debugger che può prendere istantanee di utilizzo della memoria come applicazione Java viene eseguito, aiutando i programmatori per trovare la fonte di una perdita di memoria.