मेरी वेबसाइट में मैं एक ObjectContextStorage जो हैउन में सभी ObjectContext रहता है। Http-request करने के बाद मैं इस स्टोरेज को हटा देता हूं (इसे HttpContext.Current.Items से हटा दें) और इस स्टोरेज में ObjectContexts को डिस्पोज करता हूं।
अब जब मैं डीबग करता हूं और अपने ऑब्जेक्ट कॉन्टेक्स्ट के _objectTypeCount को देखता हूं तो यह तब बढ़ाता है जब मैं अपनी वेबसाइट को फिर से लोड करता हूं, जबकि मुझे लगता है कि पुरानी ऑब्जेक्ट कॉन्टेक्स्ट का निपटारा हो जाएगा ??
इसे हटाने के बाद भी पुरानी ObjectContext मेरी स्मृति में क्यों है?
उत्तर:
जवाब के लिए 5 № 1आप देख रहे हैं स्थिर के चर ObjectContext
वर्ग:
private static int _objectTypeCount; // Bid counter
internal readonly int ObjectID = System.Threading.Interlocked.Increment(
ref _objectTypeCount);
मुझे इसका कोई उद्देश्य नहीं है। (यह मायने रखता है कि एक आवेदन या सत्र के दौरान एक ObjectContext कितनी बार बनाया गया है, या कुछ और ???)
लेकिन क्योंकि यह है स्थिर आप कभी भी बढ़ते काउंटर से निष्कर्ष नहीं निकाल सकते हैं कि आपका ObjectContext
उदाहरणों "स्मृति से हटा दिया गया है।
संपादित करें
यह काउंटर और ObjectID
कोड में जाहिरा तौर पर तथाकथित के साथ है BID ट्रेसिंग। "बोली" के लिए खड़ा है "निर्मित-निदान में"ऊपर दिया गया आंतरिक कोड निर्माण कई ADO.NET कक्षाओं में होता है। इसका उपयोग सिर्फ उन कक्षाओं में ट्रेसिंग विधि कॉल के लिए किया जाता है और इस तरह से ट्रेस फ़ंक्शन में होता है:
EntityBid.Trace("<ec.EntityCommandDefinition.CreateCommand|ADV> %d#n",ObjectID);
The _objectTypeCount
और यह ObjectID
बस वहाँ एक प्रकार का एक नाम (या अद्वितीय आईडी) आउटपुट अनुरेखण के लिए एक उदाहरण देने के लिए कर रहे हैं.
अनुरेखण के अलावा यह के अंदर कोई कार्यात्मक अर्थ है ObjectContext
कक्षा।