का परीक्षण करता है, मैं परीक्षण कर रहा हूं कि संग्रह में कितना बड़ा संग्रह हो सकता है। नेट। तकनीकी रूप से, कोई संग्रह वस्तु भौतिक स्मृति के आकार में बढ़ सकती है।.NET में बहुत बड़ा संग्रह आउट-ऑफ-मेमोरी अपवाद
फिर मैंने निम्नलिखित कोड का परीक्षण एक सेवर में किया, जिसमें 16 जीबी मेमोरी है, विंडोज 2003 सर्वर और विजुअल स्टूडियो 2008 चल रहा है। मैंने एफ # और सी # कोड दोनों का परीक्षण किया, और चलते समय टास्क मैनेजर को देखा। मैं देख सकता हूं कि 2 जीबी मेमोरी बढ़ने के बाद, प्रोग्राम आउट-ऑफ-मेमोरी अपवाद के साथ दुर्घटनाग्रस्त हो गया। मैंने प्रॉपर्टी पेज में लक्ष्य प्लेटफ़ॉर्म को x64 पर सेट किया था।
open System.Collections.Generic
let d = new Dictionary<int, int>()
for i=1 to 1000000000 do
d.Add(i,i)
मैंने C5 संग्रह पुस्तकालय में एक ही परीक्षण किया था। नतीजा यह है कि सी 5 में शब्दकोश पूरी मेमोरी का उपयोग कर सकता है। कोड सी 5:
let d = C5.HashDictionary<int, int>()
for i=1 to 1000000000 do
d.Add(i,i)
कोई भी जानता है क्यों?
शारीरिक स्मृति जो भी कुछ भी नहीं अधिकतम आकार के साथ क्या करना है देखते हैं। विंडोज़ ने एक दशक से अधिक समय तक वर्चुअल मेमोरी प्रबंधन का उपयोग किया है। आपके पास ऐसी ऑब्जेक्ट्स हो सकती हैं जो उपलब्ध भौतिक स्मृति से कहीं अधिक बड़ी हैं, क्योंकि निश्चित रूप से उपलब्ध होने पर भौतिक स्मृति * शून्य * हो सकती है जब एक नई प्रक्रिया बनाई जाती है। वर्चुअल मेमोरी का यह पूरा * बिंदु * है; कि भौतिक स्मृति वर्चुअल मेमोरी का एक प्रदर्शन अनुकूलन है। (यदि काम करने वाले सेट को रखने के लिए पर्याप्त भौतिक स्मृति नहीं है तो प्रदर्शन घटता है, लेकिन सबकुछ अभी भी * काम * होना चाहिए।) –
@EricLippert समझा और सहमत हो गया लेकिन रिवर्स के बारे में क्या ... क्या आपको कभी भी ओओएम मिलना चाहिए जब भौतिक स्मृति हो उपलब्ध? (मान लीजिए कि यह एक वास्तविक ओओएम है जो बहुत अधिक हैंडल/समान समस्या नहीं है)। इस उदाहरण में, ऐसा लगता है कि सीएलआर-लगाई गई सीमा मुद्दा थी, लेकिन इसका मतलब है कि ओपीएस प्रश्न मेरी राय – Basic