c# - सी#में ढेर क्षमता




.net clr (4)

क्या कोई मुझे बता सकता है कि स्टैक क्षमता सी # में क्या है।

मैं 30,000 वस्तुओं की एक सरणी का उपयोग कर 3 डी जाल बंद ऑब्जेक्ट बनाने की कोशिश कर रहा हूं।


.NET अनुप्रयोग के लिए डिफ़ॉल्ट स्टैक आकार 1 एमबी है (32-बिट एएसपी.NET ऐप्स के लिए डिफ़ॉल्ट 256 केबी और 64-बिट एएसपी.NET ऐप्स के लिए 512 KB) है, लेकिन आप इसे बदल सकते हैं। एप्लिकेशन के लिए आप निष्पादन योग्य के पीई हेडर को संशोधित करके डिफ़ॉल्ट आकार बदल सकते हैं। आपके द्वारा बनाए गए धागे के लिए, आप कन्स्ट्रक्टर ओवरलोड का उपयोग कर सकते हैं जो एक स्टैक आकार लेता है।

लेकिन जैसा कि एंटोन Tyjhyy अपने जवाब में बताता है, सरणी संदर्भ प्रकार हैं और इस प्रकार ढेर पर स्थित है (भले ही सरणी मूल्य प्रकारों का एक समूह पकड़ने के लिए होता है)।


आपकी सरणी ढेर पर रह जाएगी, स्टैक आकार आपके मामले में अप्रासंगिक है।



यदि आप अपने वर्तमान .Net असेंबली के लिए मान देखना चाहते हैं तो आप Visual Studio कमांड प्रॉम्प्ट के साथ आने वाले ILDASM कमांड का उपयोग कर ऐसा कर सकते हैं। एक बार टूल शुरू करने के बाद, अपनी असेंबली खोलें और फिर View -> Headers मेनू पर जाएं। अब नई खुली Headers विंडो में PE Optional Header (32 bit) अनुभाग तक स्क्रॉल करें। आप दो फ़ील्ड देखेंगे:

  1. स्टैक रिजर्व का आकार - यह स्वयं व्याख्यात्मक है। यह आपके प्रोग्राम / एप्लिकेशन में बनाए गए किसी भी थ्रेड को आवंटित डिफ़ॉल्ट स्टैक मेमोरी आकार है।
  2. स्टैक प्रतिबद्धता का आकार - प्रतिबद्ध स्टैक स्पेस है - ( here से हंस पासेंट का उद्धरण)

कहा गया स्थान ऑपरेटिंग सिस्टम की पेजिंग फ़ाइल में आरक्षित है, इसलिए जब आवश्यक हो तो ढेर को हमेशा बदल दिया जा सकता है।







stack