3

MSDNによると、呼び出しは反映されたメソッド情報をキャッシュに保存するため、コストのかかる操作を再度実行する必要はありません。Type.GetMethods()MemberInfo

特定の仕様に一致するメソッドを探して、アセンブリ/型をスキャンするアプリケーションがあります。問題は、.NET がメソッド メタデータに依存するため、メモリ消費が大幅に増加することです (特に、参照されるアセンブリが多数ある場合)。

MemberInfoこのキャッシュをクリアまたは無効にする方法はありますか?

4

2 に答える 2

3

私はそうは思わない。1 つのトリックは、AppDomain でこの作業を行うことです。新しい AppDomain を作成し、すべての作業を行い、結果を報告してから、AppDomain をアンロードできます。単純なタスクではなく、かなり遅いですが、アセンブリまたはリフレクション関連のキャッシュを効果的にアンロードする唯一の方法です (私が知っている)。

于 2010-06-17T20:31:49.467 に答える
0

Assembly.ReflectionOnlyLoad(string)を使用してメソッドを実行する必要がない場合は、メモリ消費をいくらか減らすことができます。ただし、アセンブリをアンロードするには、AppDomain をアンロードする必要があります。そのため、問題がリーク (プログラムが開いたままになり、ユーザーが新しいアセンブリを渡して無期限に参照し続ける) である場合は、メモリ使用量が多いだけでなく、役に立ちません。

于 2010-06-18T00:27:11.647 に答える