2012-02-16 13 views
15

Assembly.Loadを複数回呼び出すと副作用が発生しますか?Assembly.Loadを複数回呼び出すことの副作用

for (int i = 0; i < N; i++) 
{ 
    Assembly.Load(assemblyStrongName); 
    // ....... 
} 

これは、アセンブリを1回読み込むのですか?私はAppDomain.CurrentDomain.GetAssemblies()と前と後にチェックして、それは(それがすべきである)一度読み込まれているようだが、それは副作用がありますか?

長時間実行しているサーバーアプリケーション(再起動しないで数ヶ月/年を実行)では、上記の問題が発生しますか?

+2

アセンブリをロードすることが、何ヶ月も何年も活発に活動するシステムを持っているなら、私は感心しています。 –

+1

必然的 - メモリリークを追跡している場合は、適切なツールを使用して、実際のオブジェクトが漏洩しているかどうかを確認してください。 –

+0

@Damien_The_Unbeliever:私はメモリリークを追跡していません。私は今まで手動でアセンブリをロードしたことはありませんでしたので、ちょうど(プログラマーの)好奇心だった:)。 – JohnDoDo

答えて

14

これは、アセンブリを1回読み込むのですか?

はい。アセンブリは現在のAppDomainにロードされ、そのAppDomainに一度だけロードされます。これを複数回呼び出すと、既存のアセンブリが返されます。

+0

副作用や問題がありますか? – JohnDoDo

+3

@JohnDoDoいいえ - それはちょうど既存のアセンブリを返す必要があります。 AppDomainでアセンブリを> 1回ロードすることは不可能です。ロードされると、AppDomainがシャットダウンされるまでアンロードされません。 –

関連する問題