C# WPF के लिए प्रोग्राम का निष्पादन जारी रखने के लिए अपर्याप्त मेमोरी


परियोजना: मेरे पास एमएस एक्सेस एडीपी 2003 प्रोजेक्ट में अकाउंटिंग प्रोजेक्ट था जो एसक्यूएल सर्वर डेटाबेस से जुड़ता है, क्योंकि एक्सेस में एनीमेशन के साथ एक सुंदर और आधुनिक यूजर इंटरफेस बनाना संभव नहीं है, मैंने अपने प्रोग्राम को फिर से लिखने का फैसला किया, मैं उस प्रोजेक्ट को कनवर्ट करना चाहता हूं एक प्रोजेक्ट के लिए तेज गति कार्यक्रम और एनीमेशन और फीचर के साथ सुंदर यूआई होना चाहिए ताकि उपयोगकर्ता पूरे एप्लिकेशन की थीम को डार्क या लाइट में बदल सके, इसलिए मैंने सी # डब्ल्यूपीएफ कहा।

परियोजना की जानकारी: .NET फ्रेमवर्क 4.7.2 के साथ C# WPF, मैंने संपूर्ण एप्लिकेशन के लिए डार्क/लाइट थीम सेट करने के लिए मटेरियल डिज़ाइन का भी उपयोग किया

ओएस: 8 जीबी रैम के साथ विंडोज 10 x64

कोड: इनवॉइस विंडो ↓

एक्सएएमएल: एक्सएएमएल

सी# : सी तेज

मेरे प्रोजेक्ट में रैम की खपत बहुत अधिक है, लेकिन अब जब मेरा प्रोजेक्ट बड़ा हो गया है, तो मेरे मेनविंडो में जब मैं एक विंडो लोड करना चाहता हूं, तो मुझे निम्न त्रुटि मिलती है:

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            new HEAD_LST_FROOSH22().Show();
        }
Error:

System.OutOfMemoryException: 'Insufficient memory to continue the execution of the program.

मैंने क्या प्रयास किया है:

मैंने इस त्रुटि की जांच करने के लिए आवश्यक सभी डेटा प्रदान करने का प्रयास किया, यह एक सामान्य त्रुटि है और कोई भी सारांश कोड के साथ टिप्पणी नहीं कर सकता है। मैं यह उम्मीद नहीं करता कि कोई भी पूरा कोड पढ़ेगा, लेकिन कोई एक नज़र से कोई राय या सुराग दे सकता है।

सभी को धन्यवाद

अद्यतन :

मैंने यूआई का परीक्षण करने के लिए एक छोटा सी # डब्ल्यूपीएफ बनाया क्योंकि मुझे “सामग्री डिजाइन” पर संदेह था

तो यहाँ यह है:

स्क्रीनशॉट

समाधान 1

इतनी कम जानकारी में कुछ कहना मुश्किल है…लेकिन:
Win10 के साथ 8 जीबी रैम बहुत अधिक मेमोरी नहीं है क्योंकि विंडवॉस को अपने लिए 5 जीबी तक की मेमोरी की आवश्यकता होती है।
अब यह आपके एप्लिकेशन पर निर्भर करता है कि शेष मेमोरी के साथ क्या होता है और यदि यह पर्याप्त है…

समाधान 2

उद्धरण:

C# WPF के लिए प्रोग्राम का निष्पादन जारी रखने के लिए अपर्याप्त मेमोरी

आपने हमें बेतुके अनुमानों के लिए पर्याप्त जानकारी नहीं दी, लेकिन समझदार समाधानों के लिए पर्याप्त जानकारी दी।
यह देखने के लिए कि क्या समस्या अभी भी उत्पन्न होती है, 12 जीबी या 16 जीबी वाले पीसी पर प्रयास करना ही समझदारी वाली बात है।

W10 मेमोरी का भूखा है, और यदि आप इसे एंटी-मैलवेयर से भरते हैं, तो यह पूरी तरह से सामान्य हो सकता है कि 8GB W10, एंटी-मैलवेयर और अन्य चीज़ों के लिए पर्याप्त है, लेकिन उपयोगकर्ता ऐप्स के लिए इसमें बहुत कुछ नहीं बचा है।

अन्यथा, समस्या अनमास्टर्ड रिकर्सिव कोड की विशिष्ट है।

अपने पीसी पर हाथ रखे बिना और यह समझने के लिए माप किए बिना कि मेमोरी की खपत क्या होती है और यह कैसे करती है, मदद करना असंभव है। T6इस तरह की गतिविधि आम तौर पर पेशेवरों के लिए होती है और समय बर्बाद होने के कारण महंगी होती है।

समाधान 3

राल्फ और पैट्रिस ने जो कहा है, उसमें जोड़ने के लिए… आपके द्वारा दिखाया गया कोड उस त्रुटि संदेश का कारण बन सकता है यदि यह कोड

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            new HEAD_LST_FROOSH22().Show();
        }

का हिस्सा है HEAD_LST_FROOSH22 वर्ग, या HEAD_LST_FROOSH22 क्लास वर्तमान क्लास का एक उदाहरण बनाता है और अनबाउंड रिकर्सन परिणाम होता है।

आइए मैं यह समझाने की कोशिश करूं कि “अनबाउंड रिकर्सन” क्या है: वास्तविक दुनिया में, आपको एक काम करना है – एक कप चाय बनाना। लेकिन एक कप चाय बनाने के लिए, आपको पानी उबालना होगा, और जिस व्यक्ति केतली का मालिक है वह आपको इसे तभी पीने देगा जब आप उन्हें एक कप चाय देंगे।
चूँकि आपको एक कप चाय बनाने के लिए केतली की आवश्यकता होती है, एक कप चाय बनाने के लिए आपको केतली की आवश्यकता होती है, आप कार्य को कभी पूरा नहीं कर सकते।

कंप्यूटिंग में, वही बात होती है: विधि ए स्वयं को कॉल करती है (प्रत्यक्ष रिकर्सन)
या यह विधि बी को कॉल करता है जो विधि ए (अप्रत्यक्ष रिकर्सन) को कॉल करता है। क्योंकि हर बार जब आप किसी विधि को कॉल करते हैं तो यह एप्लिकेशन स्टैक पर स्थान का उपयोग करता है, आप बहुत जल्दी पूरे स्टैक को समाप्त कर देते हैं, और आपको “मेमोरी से बाहर” त्रुटि मिलती है। स्टैक बहुत छोटे हैं – केवल 1एमबी – इसलिए उससे अधिक होना बहुत आसान है।

इसलिए “संपूर्ण कोड” को देखकर शुरुआत करें और पता लगाएं कि उस कोड वाली कॉल और उसके बीच क्या संबंध है HEAD_LST_FROOSH22 क्लास है.

コメント

タイトルとURLをコピーしました