2012-06-20 11 views
6

मैं बस इसे दूसरे दिन सोच रहा था। मुझे बिल्कुल यकीन नहीं है कि एएसपीएक्स कचरा निपटान कैसे प्रबंधित करता है, लेकिन जहां तक ​​मैं "समाप्त लोडिंग" कह सकता हूं, स्थिर स्मृति मानों को हटा नहीं देता है या पृष्ठ को फिर से लोड करने के बाद। कम से कम सी के संदर्भ में स्टेटिक का मतलब है कि स्मृति आवंटन आपके प्रोग्राम का पालन करता है जब तक कि प्रोग्राम स्वयं बंद न हो जाए। क्या यह एएसपीएक्स में वही तरीका है? यदि मेरे पास स्थिर मूल्य है और मैं पृष्ठ ए से पृष्ठ बी पर जाता हूं, तो क्या यह स्थिर मूल्य तब तक रैम में लगातार रहता है जब तक वे एप्लिकेशन छोड़ नहीं देते हैं या यह मान एक बार हटा दिया जाता है जब मैं पेज ए पर नहीं हूं? (सर्वर में एप्लिकेशन पूल से अपने उदाहरण को हटाने वाली एक अलग वेबसाइट पर जाएं)।ASP.NET में स्टेटिक ऑब्जेक्ट्स मेमोरी का अपशिष्ट?

मैं क्या अनुभव किया है से:

public static class foo 
    { 
     public static int x; 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     foo.x++; //This will continue to increment from the last value before reload 
    } 
+0

http://stackoverflow.com/questions/1714064 –

+0

http://stackoverflow.com/questions/1563171 –

+0

http://stackoverflow.com/questions/3814608 –

उत्तर

5

स्टेटिक कक्षाएं ASP.NET में बचा जाना चाहिए। जब तक एप्लिकेशन पुनरारंभ नहीं होता है तब तक वे स्मृति में रहते हैं और कई समवर्ती त्रुटियों और दौड़ की स्थितियों के अधीन होते हैं।

और उपयोगकर्ता सत्र (ब्राउज़र सत्र) बंद करना एप्लिकेशन को पुनरारंभ नहीं करता है! यदि उपयोगकर्ता छोड़ देता है और वापस आता है तो भी वे स्मृति में रहते हैं। तो वास्तव में वास्तव में स्थिर वर्गों से बचें!

+0

आप एक लेख या किसी तरह के संदर्भ है कि इस विषय पर अधिक छूता है? मैं इसके बारे में अधिक जानने में दिलचस्प होगा। –

+0

उन लिंक को देखें जो आप अपने प्रश्न की टिप्पणियों में पा सकते हैं। आप यहां http://bytes.com/topic/c-sharp/answers/878381-static-variable-hell-asp-net और यहां देख सकते हैं http://www.foliotek.com/devblog/avoid-static- चर-इन-एएसपी-नेट/स्टैक ओवर फ्लो में भी बहुत सी पोस्ट हैं। –

+2

ध्यान दें कि अगर आपको वास्तव में अपने पूरे एप्लिकेशन में जानकारी साझा करने की आवश्यकता है तो आपको स्थिर चर का उपयोग करने की आवश्यकता हो सकती है। लेकिन मैं इस मामले में सिंगलटन का उपयोग करूंगा। –

0

यह आपके मानक CLR निष्पादन मॉडल, यह asp.net के लिए अलग नहीं है है। स्टेटिक ऑब्जेक्ट को एप्लिकेशन की जड़ें माना जाता है और कचरा नहीं होता है।

यह कैसे कचरा संग्रहण .net में काम करता है पर एक पुराने लेख है, लेकिन मुझे लगता है कि सभी सिद्धांतों अभी भी वही कर रहे हैं: http://msdn.microsoft.com/en-us/magazine/bb985010.aspx

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