मेरे पास एक जीयूआई एप्लीकेशन है जो मेमोरी रिसाव नहीं है। मैंने कई परीक्षण चक्रों पर फास्टएमएम के साथ इसकी पुष्टि की है। एक विशेष ग्राहक के सर्वर पर, मुझे यादृच्छिक दुर्घटनाएं मिलती हैं। सर्वर चश्मे हमारे अन्य ग्राहकों के साथ अच्छी तरह से हैं (और हमने वास्तव में विभिन्न हार्डवेयर पर कोशिश की है), और इस तरह प्रोग्राम द्वारा उपयोग की जाने वाली फाइलें हैं (जहां तक मैं कह सकता हूं, कुछ सुपर-संवेदनशील सामग्री है I तक पहुंच नहीं मिल सकती है, लेकिन वहां सामान्य से कुछ भी नहीं लगता है)।डेल्फी - जांचें कि "समय पर" स्मृति जारी की जा रही है
मैंने इस मुद्दे को कम करने के लिए यूरेकालोग और माधी की पसंद की कोशिश की है, लेकिन दुर्भाग्यवश, वे केवल अवसर पर दुर्घटना के समय अपवाद पकड़ते हैं, हर समय नहीं। जब ऐसा होता है, तो यह आमतौर पर दुर्घटना से पहले एक या अधिक "स्मृति से बाहर" त्रुटि दिखाता है।
तो मैं सोच रहा हूं कि कुछ वस्तुएं "बहुत देर हो चुकी हैं", यानी जब एप्लिकेशन बंद हो रहा है, तो जब मैं उन्हें मुक्त करना चाहता हूं तो इसका विरोध किया जाता है? मैंने FastMMUsageeTracker डेमो देखा है, लेकिन वास्तव में यह सब समझ में नहीं आया। क्या कहीं भी दस्तावेज है? या कोई व्यक्ति (कुछ हद तक सुलभ) शब्दों में डाल सकता है कि मैं इसके बारे में कैसे जांच सकता हूं?
वैकल्पिक रूप से, यह पता लगाने का सबसे अच्छा तरीका क्या होगा कि एप्लिकेशन इसकी "स्मृति सीमा" के करीब आ रहा है, ताकि कुछ निवारक कार्रवाई कर सकें? अगर मैं सही ढंग से समझता हूं, नियमित डेल्फी ऐप 32 बिट है, तो यह 2 जीबी मेमोरी तक ठीक से संभालना चाहिए (बशर्ते हार्डवेयर इसे निश्चित रूप से समर्थन देता है), सही?
पुनश्च: डेल्फी 2009 या XE, जो अगर प्रासंगिक है
धन्यवाद!
संपादित करें - अंक संभवतः
हल हम एक ऐसी समस्या खोजने में सफल रहे हैं, जहां एक पॉप-अप विंडो कि बंद कर देता है और स्वयं को अपने आप को मुक्त कर देते कुछ समय बाद एक बहुत तेज दर से बनाया जा रहा था की तुलना में यह गायब हो गया था। यह समय के साथ बड़ी मात्रा में स्मृति खाएगा, और उसके बाद कोई स्मृति आवंटन मूल रूप से किनारे पर लाएगा और "स्मृति से बाहर" समस्या को ट्रिगर करेगा।
यह समझाएगा कि स्टैक निशान जहां असंगत है।
मुझे पूरी तरह से आश्वस्त नहीं है कि यह हमारा एकमात्र मुद्दा है, भले ही यह संभावना न हो कि यह परिदृश्य हमारे आवेदन चल रहे वर्षों से पहले हो सकता है, लेकिन किसी भी तरह से यह नहीं है। मैं इस मुद्दे पर बहुत अधिक खुदाई करूँगा।
उन सभी के लिए धन्यवाद जिन्होंने जवाब दिया, प्रत्येक जवाब में वास्तव में इसकी मूल्यवान जानकारी है।
पीएस मेमोरी अपवादों से बाहर लगभग 1 जीबी ऊपर से कहीं भी हो सकता है - कोई पूर्व परिभाषित स्तर नहीं है। ऐसे कई कारक हैं जो सटीक सीमा को प्रभावित करते हैं: कुल रैम, कुल वर्चुअल मेमोरी, अन्य प्रक्रियाओं द्वारा कितना उपयोग किया जा रहा है आदि। इसके अलावा, नीचे मेरा कोड मूल रूप से फास्टएमएम मेमोरी ट्रैकर से है! – Misha
ध्यान देने योग्य एक बात: मैंने कभी भी उन परियोजनाओं में उपलब्ध स्मृति को समाप्त करने में कामयाब नहीं रहा है जिन पर मैंने काम किया है, लेकिन मुझे कुछ बार स्मृति त्रुटियों से बाहर निकला है। यह कुछ मामलों में दूषित या बुरी तरह से गणना किए गए डेटा द्वारा स्मृति प्रबंधक से आकार में कुछ गीगाबाइट्स के एक बफर को आवंटित करने के लिए कहने का प्रयास कर सकता है, जब आपको वास्तव में कुछ की आवश्यकता होती है तो कुछ कम या कम होता है। –