3

クロスAppDomainオブジェクトを試していますが、非常に奇妙なことが1つ見つかりました。

MemoryStreamオブジェクトを割り当ててその参照を返す(呼び出し元によってすぐに破棄される)リモートメソッドを呼び出すと、GC.Collect()を呼び出した後でも、メモリ使用量が大幅に増加し、ドロップダウンしません。

毎回新しいStringまたはbyte[]オブジェクトを返す呼び出しメソッドでは、リークはありません。

メモリプロファイラーは、ほとんどのライブオブジェクトがタイプChar []およびString(MemoryStreamの場合)であることを示しています。

問題は-私は何かを誤解しましたか、そしてリモート呼び出しはMarshalByRefObjectから継承するほど単純ではありませんか?

4

1 に答える 1

3

リモート呼び出しは同じくらい簡単ですが、オブジェクトの有効期間とガベージコレクションはそれほど単純ではありません。

リースとスポンサーシップについて少し読んでください。

于 2011-09-04T20:59:19.523 に答える