Ogni volta che si sta lavorando con una serie così grande, probabilmente si dovrebbe cercare di trovare una soluzione migliore per il problema. Ma detto questo cercherò ancora di rispondere alla tua domanda.
Come menzionato in questo article c'è un limite di 2 GB su qualsiasi oggetto in .Net. Per tutti x86, x64 e IA64.
Come con operativi a 32 bit di Windows sistemi, c'è un limite di 2 GB alla dimensione di un oggetto è possibile creare durante l'esecuzione di un 64-bit gestito applicazione su un sistema operativo Windows a 64 bit.
Inoltre, se si definisce un array troppo grande nello stack, si verificherà un overflow dello stack. Se si definisce la matrice sull'heap, tenterà di allocarlo tutto in un unico grande blocco continuo. Sarebbe meglio usare un ArrayList che ha allocazione dinamica implicita sull'heap. Questo non ti permetterà di superare i 2 GB, ma probabilmente ti permetterò di avvicinarti ad esso.
Penso che il limite della dimensione dello stack sarà maggiore solo se si utilizza un'architettura e un sistema operativo x64 o IA64. Usando x64 o IA64 avrai una memoria allocabile a 64 bit invece di 32-bit.
Se non si è in grado di allocare l'elenco di array tutto in una volta, è probabile che sia possibile allocarlo in parti.
Utilizzando un elenco di array e aggiungendo 1 oggetto alla volta su un computer Windows 64 x64 con 6 GB di RAM, il massimo che posso ottenere è ArrayList: 134217728. Quindi penso davvero che sia necessario trovare una soluzione migliore al tuo problema che non usa tanta memoria. Magari scrivendo su un file invece di usare la RAM.
fonte
2009-02-21 20:33:01
se si sta cercando di creare una tale varietà di risolvere un problema del progetto Eulero, quindi penso che tu abbia scelto una strategia di soluzione scadente per il problema. (Non so se puoi creare array più grandi su x64, spero che qualcuno possa dare una risposta reale alla tua domanda .Net) – Brian
Sì, so che è il caso (ri: strategia) ma sono rimasto scioccato quando ho raggiunto il limite! – inspite
Ho già fatto la stessa domanda, non posso ottenere una risposta completa, spero che tu abbia una risposta per superare questo problema. Http://stackoverflow.com/questions/494923/numbers-that-exceeds-basic-types-in-c – Canavar