Il modo migliore per rintracciare una perdita di memoria (C #) visibile solo sulla scatola di un cliente

StackOverflow https://stackoverflow.com/questions/150805

Domanda

Qual è il modo migliore per rintracciare una perdita di memoria che si trova solo sulla scatola di test / rilascio di un cliente e in nessun altro posto?

È stato utile?

Soluzione

dotTrace3.1

(Questa domanda è piuttosto divertente, perché sto monitorando una perdita di mem che non è presente sul mio computer ...)

Altri suggerimenti

Prova un profiler di memoria come ANTS Profiler .

Se l'utente ha il problema in modo coerente, prendi uno stackdump e analizzalo in modo standard

È codice, dati o configurazione.

Dato che dici che il codice non è difettoso il 100% delle volte, darei la colpa alla configurazione. Prendi una copia della configurazione (e facoltativamente alcuni dati) e prova a replicare il problema; non saprai di averlo trovato e risolto senza riproduzione.

Infine, risolvilo con un profiler di memoria.

Ecco un'opzione: dai loro una casella in cui la perdita non è presente.

A volte, non è il codice.

Modifica: È il codice, i dati o la configurazione.

O .NET Framework, il sistema operativo, i driver, IIS o COM (automatizzando Excel, ad esempio) o così via.

La mia ipotesi è che la perdita di memoria non sia riproducibile se non sulla scatola del client (a cui lo sviluppatore non può accedere per il debug).

PerfMon può essere utile ( http://dotnetdebug.net / 2005/06/30 / perfmon-your-debug-compagno / ). Esistono diversi contatori che possono aiutare a restringere la risorsa che perde, a quale velocità, ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top