Il modo migliore per rintracciare una perdita di memoria (C #) visibile solo sulla scatola di un cliente
-
02-07-2019 - |
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?
Soluzione
(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.