दिलचस्प पोस्ट
जावास्क्रिप्ट में किसी स्ट्रिंग को संख्या बदलने का सबसे अच्छा तरीका क्या है? डॉकर-मशीन में पोर्ट अग्रेषण? jQuery.ajax () विधि के async विकल्प पदावनत, अब क्या? स्पार्क में मल्टी लाइन इनपुट रिकॉर्ड की प्रक्रिया कैसे करें उपयोगकर्ता के रूप में प्रमाणीकृत किए बिना मैं Instagram से उपयोगकर्ता के मीडिया कैसे प्राप्त करूं? .NET 4.0 और खतरनाक OnUserPreferenceChanged हैंग एमुलेटर पर एंड्रॉइड मार्केट ऐप कैसे स्थापित करें? क्या कोई "पिछला भाई" सीएसएस चयनकर्ता है? कैसे समय के साथ सुंदर ढंग से निपटने के लिए उद्देश्य सी में फ्लोट करने के लिए स्ट्रिंग कन्वर्ट WPF सीमा रहित विंडो के लिए DropShadow यदि इनपुट टैग का कोई नाम नहीं है, तो फॉर्म डेटा अभी भी स्थानांतरित हो जाता है? सरणी के लिए अल्पविराम से अलग स्ट्रिंग कन्वर्ट करें विंडोज पर गिट के साथ काम करने के लिए मैं एक संपादक कैसे स्थापित कर सकता हूँ? क्या एचटीएमएल टैग ओलोड / आतंक जावास्क्रिप्ट घटना विशेषताओं का समर्थन करता है?

सीएलआर 4.0 में एकल ऑब्जेक्ट अभी भी 2 जीबी तक सीमित हैं?

जैसा कि मैं समझता हूं कि .NET में एकल उदाहरणों पर 2 जीबी की सीमा है। मैंने उस पर बहुत ध्यान नहीं दिया है क्योंकि मैं मुख्य रूप से 32 बिट ओएस पर काम कर रहा हूं। 32 पर, लेकिन वैसे भी एक कृत्रिम सीमा अधिक या कम है हालांकि, मुझे यह जानने में बहुत आश्चर्य हुआ कि यह सीमा 64 बिट । नेट पर भी लागू होती है

चूंकि संग्रह List<T> वस्तुओं की दुकान के लिए एक सरणी का उपयोग करते हैं, इसलिए इसका मतलब है कि 32 बिट पर चलने वाला कोई नेट अनुप्रयोग 64 बिट पर चलने वाले समान अनुप्रयोग की तुलना में एक सूची में दो बार कई संदर्भ प्रकार के आइटम पकड़ने में सक्षम होगा। यह काफी आश्चर्यजनक इमो है

क्या किसी को पता है कि सीएलआर 4.0 में इस सीमा को संबोधित किया गया है (इस समय मेरे पास 4.0 स्थापना नहीं है)।

वेब के समाधान से एकत्रित समाधान "सीएलआर 4.0 में एकल ऑब्जेक्ट अभी भी 2 जीबी तक सीमित हैं?"

यह उस से भी बदतर है – आप प्रक्रिया की जगह है, जब आप 32 बिट में .NET में काम कर रहे हैं सैद्धांतिक सीमा से बहुत कम है 32 बिट। नेट एप्स में, मेरा अनुभव यह है कि आप मेमोरी उपयोग की लगभग 1.2-1.4 जीबी मेमोरी त्रुटियों से बाहर निकलने शुरू करते हैं (कुछ लोग कहते हैं कि वे 1.6 तक पहुंच सकते हैं … लेकिन मैंने कभी नहीं देखा )। बेशक, यह 64 बिट सिस्टम पर कोई समस्या नहीं है

कहा जा रहा है कि, संदर्भ प्रकारों की एक भी 2 जीबी सरणी, यहां तक ​​कि 64 बिट सिस्टम पर, वस्तुओं की एक बड़ी मात्रा है यहां तक ​​कि 8 बाइट संदर्भों के साथ, आपके पास 268,435,456 ऑब्जेक्ट संदर्भों की एक सरणी आवंटित करने की क्षमता है – जिनमें से प्रत्येक बहुत बड़ी हो सकते हैं (2 जीबी तक, और अधिक अगर वे नेस्टेड ऑब्जेक्ट्स का उपयोग कर रहे हैं)। यह अधिक स्मृति की तुलना में वास्तव में सबसे अधिक अनुप्रयोगों के लिए आवश्यक होगा।

सीएलआर टीम के सदस्यों में से एक ने इस बारे में ब्लॉग किया , इन सीमाओं के आसपास काम करने के तरीकों के लिए कुछ विकल्प एक 64 बिट सिस्टम पर, अपने BigArray <T> की तरह कुछ करना, किसी भी संख्या में ऑब्जेक्ट को सरणी में आवंटित करने के लिए एक सक्षम समाधान होगा – 2 जीबी एकल ऑब्जेक्ट सीमा से अधिक है पी / इंवोक भी आपको बड़ी सरणी आवंटित करने की अनुमति दे सकता है।


संपादित करें: मुझे इसका उल्लेख करना चाहिए था, साथ ही – मुझे विश्वास नहीं है कि इस व्यवहार को बिल्कुल भी नेट पर बदल दिया गया है। एनएटी की शुरुआत के बाद से व्यवहार अपरिवर्तित रहा है।


संपादित करें: .NET 4.5 में अब विकल्प x64 में स्पष्ट रूप से ऑब्जेक्ट्स को 2 जीबी से अधिक के लिए app.config में gcAllowVeryLargeObjects सेट करके अनुमति देंगी ।

.NET Framework 4.5 64 बिट प्लेटफ़ॉर्म पर 2GB से बड़ा एरे बनाने की अनुमति देता है यह सुविधा डिफ़ॉल्ट रूप से नहीं है, इसे gcAllowVeryLargeObjects तत्व का उपयोग कर config फाइल के माध्यम से सक्षम होना चाहिए।

http://msdn.microsoft.com/en-us/library/hh285054(v=vs.110).aspx

यह संख्यात्मक क्षेत्र में एक बड़ा सौदा है। .NET में संख्यात्मक कक्षा पुस्तकालयों का उपयोग करने वाले कोई भी उनके मैट्रिक्स को नीचे के एरे के रूप में संग्रहीत किया गया है। यह इतनी मूल लाइब्रेरी है जिसे नंबर क्रंचिंग करने के लिए कहा जा सकता है। 2 जीबी की सीमा गंभीर रूप से 64-बिट। नेट में मैट्रिक्स के आकार को रोकती है। और यहां पर