2015-09-05 8 views
9

मैं स्मृति समस्या के लिए काफी नया हूं। आशा है कि आपको नहीं लगता कि यह पूछने के लिए एक बेवकूफ सवाल है।सी # मध्यम आकार संग्रह में बड़ी वस्तु

मुझे लगता है कि स्मृति से बड़ा 85,000 बाइट्स सी # में LOH में डाल दिया जाएगा पता यानी

Byte[] hugeByteCollection = new Byte[85000]; 

मैं सोच रहा हूँ अगर आकार 10000 के साथ एक संग्रह - 20000 एक वस्तु है कि 10 सदस्य चर होते हैं साथ (बाइट प्रकार) LOH या SOH में रखा जाएगा?

उत्तर

4

वस्तुओं की एक सरणी का आकार पॉइंटर आकार के समय वस्तुओं की संख्या है। ऐसा इसलिए है क्योंकि सरणी में केवल मान प्रकार संग्रहीत किए जाते हैं, संदर्भ प्रकार (ऑब्जेक्ट्स) कहीं और संग्रहीत किए जाएंगे और सरणी के आकार की ओर गिनेंगे नहीं। तो 85000/4 = 21250 ऑब्जेक्ट्स, और 85000/8 = 10625 ऑब्जेक्ट क्रमशः 32 बिट और 64 बिट मोड में एसओएच पर एक सरणी में संग्रहीत किए जा सकते हैं।

संपादित करें: हंस पासेंट को धन्यवाद देने के लिए धन्यवाद कि यह मानता है कि संग्रह प्रकार का उपयोग एक सरणी है और सूची नहीं है। सूची बहुत अधिक आवंटन से बचने के लिए सामग्री से बड़ी होने के लिए आकार बदलती है। विवरण के लिए this link देखें

+1

इस प्रकार का गणित संग्रह प्रकारों के लिए काम नहीं करता है, यह वास्तव में 16,384 है। विवरण के लिए [यह उत्तर] (http://stackoverflow.com/a/2248188/17034) देखें। –

+0

आपकी टिप्पणी के लिए धन्यवाद! आकार बदलने का आकार केवल सूचियों के लिए है, सरणी नहीं, इसलिए सीधे इस प्रश्न से संबंधित नहीं है। लेकिन फिर भी, मुझे चेतावनी –

+0

जोड़नी चाहिए ताकि सूची में एसओएच में सूची रखने के लिए हमें विभाजन वाली सूची के साथ आने की आवश्यकता है जिसमें सूची की एक सरणी है। विभाजन सूची गतिशील रूप से एक नई सूची बनाई जाएगी और जब सूची 10000 की क्षमता से अधिक हो, तो क्या वह काम करेगा? – cscmh99

संबंधित मुद्दे