/ / एंटिटी फ्रेमवर्क - _objectTypeCount डिस्पोज करने के बाद - c #, asp.net, एंटिटी-फ्रेमवर्क, डिस्पोज

इकाई फ्रेमवर्क - निपटान के बाद _objectTypeCount - सी #, एएसपीनेट, इकाई-ढांचे, निपटान

मेरी वेबसाइट में मैं एक 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 कक्षा।