1

exe プロセスでホストされる wcf サービスを作成し、サービスを呼び出すクラス ライブラリを介してクライアントをインスタンス化しました。クラス ライブラリは Excel 2007 の com アドイン用であり、wcf サービスの理由は、大量のデータを取得するときに Excel のインプロセス メモリを使い切らないようにするためです。

ClientBase を WSHttpBinding で実装することにより、wcf サービスを作成しました。私は現在、必要最小限のプロジェクトでテストしています。唯一の機能は、wcf サービスからメッセージを返すことです。

私の質問は、wcf クライアントを作成する際のメモリ使用量と、破棄された後に解放されない理由に関するものです。アドレス空間モニターを使用してメモリ使用量を監視し、バインディングを作成すると、クライアントは約 70 MB のコミットされたメモリを使用します。

wcf のメモリ使用量または com dll の GC に関する情報は役に立ちます。

ありがとう

4

2 に答える 2

0

ここに記事があります:

http://www.danrigsby.com/blog/index.php/2008/02/26/dont-wrap-wcf-service-hosts-or-clients-in-a-using-statement/

また、以下は、しばらく前に投稿されたあなたのスレッドに似たスレッドです。それはイゴールゼバカによって答えられました。うまくいけば、それはより多くの知識を追加することができます。

this.Dispose()は、Formを閉じた後にFormが使用していたメモリを解放しません。

于 2012-08-20T22:07:07.590 に答える
0

これは、.netのガベージコレクションが機能する方法です。あらゆる場所でそれは利点をもたらしますが、いくつかの場所ではそれが妨げになるようです。1つのフォームを破棄して新しいインスタンスを作成すると、そのメモリスペースが再利用されることに気付くかもしれません。私はそれを疑っていますが。

とにかく....netのガベージコレクションはちょっと面白いimoです。

最終的にはクリーンアップされます...不確定な時間で。

ガベージコレクションを強制するコマンドがあると思います

C#でガベージコレクションを強制するためのベストプラクティス

もちろん、それはファイトクラブに少し似ています-乳首について話さないでください、そしてあなたがそれを見つけたなら、あなたはおそらくあなたが持っていなかったことを望むでしょう

GC.Collect();

ちゃんと覚えたら

また、disposeには、ブール値をとる過負荷があります。あなたがそれについて真実と呼ぶとき、それはまたそれらを強制するそのすべての部分を通り抜けます。簡単にグーグルできるいくつかの廃棄パターンがあります。Juval Lowryは、彼のコンポーネントブックでそれらについて深く掘り下げています。

于 2012-08-20T22:49:16.607 に答える