All'interno di un'applicazione complessa con multithreading, si verificano eccezioni di memoria insufficiente una volta alla settimana. L'applicazione sta inviando/leggendo enormi quantità di dati tramite diversi socket, in cui i dati letti vengono memorizzati nella cache per evitare sovraccarichi del buffer delle schede di rete.
Qual è la migliore strategia per analizzare le eccezioni di memoria? Durante il normale periodo di esecuzione, l'app viene visualizzata con una dimensione di "Totale byte in tutti gli heap" fino a 1,5 Gigabyte in Process explorer.
Potrebbe essere una strategia per avere un filo che è polling siaC# Eccezione di memoria esaurita - strategia di avviso
GC.GetTotalMemory()
o
PrivateMemorySize64()
una volta secondo a sapere quando iniziare ad analizzare le cose? Non ho ancora esaminato i profiler commerciali e sono un po 'preoccupato del loro impatto sulle prestazioni che potrebbe fornire anche risultati errati riguardo all'analisi dei problemi.
Come funziona il caching? Analizzerei una strategia di allocazione diversa per il tuo caching. – CodesInChaos
Per chiarire, sai quali sono le cause dell'eccezione di memoria insufficiente e stai cercando solo un modo per configurare la cache nella tua applicazione in modo che ciò non accada? O forse non sai cosa lo causa esattamente e vuoi risolvere il problema? – svick