Data l'opportunità di riscrivere, vorrei, ma in ogni caso, il codice come si distingue:Ho colpito un OutOfMemoryException con l'elenco <string> - è questo il limite o mi manca qualcosa?
List<string> foobar;
Poi aggiungiamo un po 'di stringhe da foobar.
Conteggio = 16777216, abbiamo raggiunto un limite di memoria esaurito.
La mia comprensione è che ogni stringa avrebbe una dimensione diversa. Effettivamente guardando i dati (non i miei dati), la maggior parte sono 2 o 3 caratteri.
what is the max limit of data into list in c#? indica che il limite massimo è:
Il numero massimo di elementi che possono essere immagazzinate nella corrente implementazione di List è, in teoria, Int32.MaxValue - solo più di 2 miliardi.
Tuttavia:
Nell'implementazione Microsoft corrente del CLR c'è un limite di dimensione massima di 2 GB oggetto . (E 'possibile che altre implementazioni, ad esempio Mono, non hanno questa limitazione.)
Nel mio esempio, ho, quello che, 16 milioni di risultati * alcuni byte? Task Manager mostra di un concerto in uso, ma ho 8 GB di RAM.
16777216 (2^24) sembra un valore piuttosto specifico - sospettosamente simile a un limite, ma non riesco a trovare alcuna documentazione da nessuna parte a) indietro in su o b) trovare un modo per aggirarlo?
Qualsiasi aiuto sarebbe apprezzato.
Alcuni codice:
List<string> returnList = new List<string>();
SqlDataReader dr; // executes a read on a database, have removed that part as that bit works fine
if (dr.HasRows)
{
while (dr.Read())
{
returnList.Add(dr.GetString(0).Trim());
}
}
questa è la forma semplificata, ora ho un po 'di try/catch per l'eccezione OOM, ma questo è il codice vero e proprio che mi sta dando il dolore.
Puoi mostrarci il tuo codice? –
La dimensione dell'heap è diversa dalla dimensione della RAM, una porzione di RAM viene utilizzata come heap, che viene utilizzata per memorizzare gli oggetti. http://stackoverflow.com/questions/2325370/c-sharp-increase-heap-size-is-it-possible – CjCoax
@JonSkeet - aggiornato con alcuni frammenti, fammi sapere se c'è qualcos'altro richiesto. –