2010-12-02 10 views
2

、あなたはXMLをロードし、何らかの理由でそれを使用する場合:読み込まれたXMLからメモリを解放しますか?例えば

XDocument doc = XDocument.Load("my.xml"); 

今、あなたがそれを使用して終了し、それによって使用される任意のメモリを解放したい、initally私はこれをnullに設定することであろうと取り払われていること仕事をしてもそれはしないので、もしそれが可能であれば、使用されたメモリを解放する適切な方法は何ですか?

答えて

3

あなたは正しいことをやっています。 GCは、圧力がかかるときに収集するときを心配してください。

+0

をどのように機能するかを説明する優れたブログ記事ですしています。 – Prix

+1

私は理解していますが、あなたは本当にそれを混乱させたくありません。 my.xmlは、多分あなたは一度に全部を読んで関与していないそれを読ん&プロセスするために他のメカニズムを調べることができますあまりにも大きい場合、あなたは:)失望することはできません - GCはそのジョブを実行してみましょう。それがクリーンアップするのが最善であることを決定するとき – n8wrl

+0

GCはクリーンアップする必要があります。他の場所の文書への参照を保持していないことを確認してください。 – Robaticus

2

適切な方法は、docを使用して、簡単な停止することです。ガベージコレクタは、それが呼び出され、docを決定しています次回はもはやあなたのコードで参照されているメモリをクリーンアップしません。

docの場合は、JITは、それが使われている最後の点を決定し、それはその時点での収集のためにeligableようになりますローカルです。 nullは必要ありません。それを処分するかを問わず、何かを強制することが可能である場合レイモンド・チェンは、私が知りたいと思ったこれは

+0

私が実際にそれを使い終えるとすぐにそれを処分する方法があるかどうか本当に知りたかった答えに感謝します。解析されているデータの量と、使用されているメモリと解放されていないメモリの量が問題になっているためです。アプリケーションが閉じられると、それはすべて解放され、私は、例えばクライアントや製品の名前が違うすべてのファイルに対してdocを使用しません。 – Prix

+2

@Prixいいえありません。あなたのアプリケーションでメモリが制御不能に成長するのを見た場合、どこかでメモリリークが発生します。あなたは何が漏れているかを知るためにプロファイラを付ける必要があります。 – JaredPar

+0

ありがとう、それは、新しいXMLが読み込まれたときにのみ成長し、私はプログラムを終了するまでneversがメモリを解放する別の命名を使用します。 – Prix

関連する問題