2009-04-25 15 views
5

Nella correzione di bug di una piccola applicazione Web ASP.NET/C# che ho creato, ho riscontrato un'eccezione OutOfMemoryException.Debug outofmemoryexception

Non ci sono suggerimenti su dove cercare questo errore di compilazione. Come posso diagnosticare questa eccezione? Suppongo che questo sia esattamente il punto in cui entra in gioco il profilo della memoria? Qualche consiglio?

Grazie

+2

Che cosa intendi esattamente, è un errore di compilazione? Il compilatore lancia una OutOfMemoryException? – asgerhallas

+1

Un tempo di compilazione fuori memoria indicherebbe che hai un codice sorgente VERAMENTE strano. L'unico modo in cui posso pensare in C++ è quello di includere i file ricorsivi (ad esempio, a.h include b.h mentre b.h include a.h) - C# ha qualche concetto simile? In pratica, devi fare qualcosa che sta facendo esplodere l'albero di analisi. –

+0

Sì, il compilatore stesso sta lanciando l'errore. Non esiste ysod, ma un errore nella finestra di output quando si tenta di eseguire il debug. Penso che il colpevole è che ho un file xml 3mb che analizzo (ha feed rss) e quindi visualizzato in un lettore di feed RSS personalizzato. Ho chiuso il server Web di sviluppo e l'ho risolto. – dotnetdev

risposta

5

Si dovrebbe prendere un dump della memoria del vostro programma a il momento in cui OutOfMemoryException si verifica e analizza cosa sta assorbendo così tanta memoria.

Tess Ferrandez ha un excellent How-To series sul suo blog.

1

spero si intende errore di runtime, e non a tempo di compilazione errore.

In genere ciò si verifica se è in crescita un elenco, che viene salvato in un campo statico o in un contenitore ASP.NET a livello di sistema.

È possibile eseguire l'applicazione in un profiler, come:

Red gate ants profiler

1

dispiace sopra, ma a me è successo più di 3 volte - Redgate ha rotto sia VS o l'intero di Windows ... Prova questo approach. Ho scoperto che la causa principale del problema è debugging debole, controllare log4net. anche semplice se (DebuggingFlag == true) Response.Write ("DebugMsg")

potrebbe essere utile come semplice e assurdo possa sembrare ...

Problemi correlati