सी # में मेरे प्रोग्रामिंग अभ्यास के लिए, मैं 0x1fffffff (बेस 10 में 536,870,911) की लंबाई के साथ लंबे, की सरणी बनाने की कोशिश कर रहा हूं, हालांकि मुझे System.OutOfMEmoryException मिला।बड़े सरणी सी # आउटऑफमेमरीएक्सप्शन
बिल्ड के लिए, मैंने x64 सिस्टम को लक्षित किया है, और मैं विजुअलस्टूडियो 2008 को विंडोज 7 x64 पर 8 जीबी रैम के साथ चला रहा हूं। यह सरणी के लिए पर्याप्त स्मृति होना चाहिए (यह जेडीके x64 और सीपीपी प्रोजेक्ट पर काम करता है)
कोई विचार?
const long MAX = 0x1fffffff; // 536870911 in base10
program.arr = new long[MAX];
for (long i = 0; i < MAX; i++)
{
program.arr[i] = i;
}
एफवाईआई, इसे "सी #" कहा जाता है, न कि "सीएसएचआरपी"। –
आप एक वस्तु को बड़ा नहीं बना सकते हैं। लेकिन यदि आप कर सकते हैं, तो आप भी इस गलतफहमी से पीड़ित हैं कि राम निर्धारित करता है कि आप कितनी मेमोरी आवंटित कर सकते हैं। यह दशकों तक नहीं है, और नहीं है। रैम सीमा की मात्रा कैसे * तेज़ * आप उस स्मृति तक पहुंच पाएंगे। बड़ी रैम होने के बाद एक प्रदर्शन अनुकूलन है; स्मृति आवंटन वास्तव में पृष्ठ फ़ाइल से आवंटन के रूप में सबसे अच्छा विचार किया जाता है। याद रखें, जब आप स्मृति आवंटित करते हैं तो आप आवंटित कर रहे हैं * वर्चुअल मेमोरी *, नहीं * हार्डवेयर मेमोरी *। –