2011-08-15 29 views
2

私のウェブサイトには、すべてのObjectContextを保持するObjectContextStorageがあります。 http要求が行われた後、私はこのストレージを捨て去り(HttpContext.Current.Itemsから削除して)、このストレージにObjectContextを破棄します。Entity Framework - 処理後の_objectTypeCount

ObjectContextの_objectTypeCountをデバッグして見ると、以前のObjectContextが破棄されていると思ううちに、自分のウェブサイトをリロードしたときに、オブジェクトIDが発生し続けます。

なぜ、古いObjectContextが処分された後でも私のメモリに残っていますか?

答えて

5

あなたはObjectContextクラスの静的変数見ている:私はこの目的何手掛かりをしたん

private static int _objectTypeCount; // Bid counter 
internal readonly int ObjectID = System.Threading.Interlocked.Increment(
                 ref _objectTypeCount); 

を。 (これは、ObjectContextは、アプリケーションまたはセッションの有効期間中に作成された頻度をカウントし、または何か???)

しかし、それは静的だから、あなたはそうではありませんあなたObjectContextインスタンスことを常に増加するカウンタから結論づけることはできませんメモリから削除されました。

編集

このカウンタと、コード内ObjectIDは明らかにそうBID tracing呼ばれてに追加しよあります。 「BID」は、「内蔵診断」の略です。上記の内部コード構成は、多くのADO.NETクラスで発生します。トレースするタイプ名のインスタンス(または一意のID)を得

EntityBid.Trace("<ec.EntityCommandDefinition.CreateCommand|ADV> %d#\n",ObjectID); 

_objectTypeCountObjectIDがちょうどあります:ちょうどそれらのクラスでメソッド呼び出しをトレースするために使用し、このようにトレース機能で発生しています出力。

トレースのほかに、ObjectContextクラスの内部では機能的な意味がありません。

+0

ご回答いただきありがとうございました。 ObjectContextのインスタンスが現在メモリ内にいくつあるのかを調べる別の方法はありますか? – Julian

+0

@ジュリアン:残念ながら私は知らない。私は 'ObjectContext'は特別なことではないと信じています。おそらく、「オブジェクトがまだメモリに残っているか、またはすでにガベージコレクションされているかどうかをチェックする方法」という質問になるでしょう。何か...私の.NETシステムインフラストラクチャに関する知識は、この質問に自分自身で答えるだけでは十分ではありません。面白い新しい質問:) – Slauma

関連する問題