- PR -

LoadFromしたら開放する必要がある?

投稿者投稿内容
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-09-13 18:38
引用:

AppDomainごと、アンロードするとは以下のような感じでしょうか。



ad が使われていません。
サンプルコードが MSDN Libray に収録されてたはずなので、探してみてください。

引用:

AppDomainを使用すると
それ固有の問題も出てくるということでしょうか。



そのとおりです。
異なる AppDomain に所属するクラスインスタンスのメソッド/プロパティを実行するためには、リモーティングが必要になります。
うにくま
ベテラン
会議室デビュー日: 2005/11/05
投稿数: 82
投稿日時: 2006-09-13 18:41
アセンブリロードしただけでメモリが圧迫されるとしたら、各アセンブリが異常に大きくないですか?
インスタンスを数万〜数百万生成したというなら分かりますが。

ビルを建てようと敷地に各階の設計図を持ち込んだら、設計図がビルの体積と同じくらいあるので作業の邪魔に。みたいな感じが。。。


通常はそれほど気にする必要はないように思います。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-09-13 19:10
引用:

うにくまさんの書き込み (2006-09-13 18:41) より:
通常はそれほど気にする必要はないように思います。


主にクライアントアプリケーションで使う場合などで、
アセンブリの使われ方によっては、節約したい場合もありますが、
サーバ環境では普通必要ないでしょう。
※とんでもなく数が多いのならまた別ですが、それはそもそも
 その状況がおかしい可能性の方が大。

あと、何でLoadFromなんてしてるんでしょうか?
普通(特にASP.NET環境では)いらないと思いますが。

AppDomainを自分で使う方法は、ASP.NETなどの環境では普通やりません。
そもそも、そんなにごくまれにしか使われないアセンブリなんでしょうか?
複数ユーザがいろんな処理を実行することを考えると、いちいち
AppDomain作って処理するほうがはるかにリソースの無駄になる可能性が
高いと思います。

加えて、AppDomainを使ったいろんな処理を目的どおり正しく実装するのは
割と敷居が高いです(ここら辺はかなり正確な知識が必要になります)。
聞いてやってみるレベルではたぶん無理です。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-13 19:13
>ad が使われていません。
ad.Load("Sample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
↑だと使ってないってことでしょうか?
(一度、投稿したときにアップミスがあって編集してあります。)

>サンプルコードが MSDN Libray
AppDomainクラスのサンプルを見てみると、たしかに全然違いますね。
AppDomainSetupして、CreateDomainして、MarshalByRefTypeを生成?
う〜ん、かなり勉強不足。。。

>通常はそれほど気にする必要はないように思います。
気にしなくてもいいところですかね?
おそらく大丈夫だとは思っているのですが
あとから、この仕組みだと無理だったってのは避けたいので
事前調査しています。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-13 19:17
>アセンブリの使われ方によっては、節約したい場合もありますが、
>サーバ環境では普通必要ないでしょう。
こころ強い一言です!

>あと、何でLoadFromなんてしてるんでしょうか?
>普通(特にASP.NET環境では)いらないと思いますが。
別スレッドで、LoadFrom系の質問をしていて、そちらには書いたのですが
やろうとしていることは、実行時までアセンブリ名のわからない
クラスの実行です。(プラグイン機能の実装です)

>AppDomain作って処理するほうがはるかにリソースの無駄になる可能性が
>高いと思います。
>聞いてやってみるレベルではたぶん無理です。
↑な情報も助かります。
ご意見をまとめると、今回の場合はAppDomainを使用するのは、
メモリを万が一、圧迫する場合の最後の手段になりそうです。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-09-13 19:36
引用:

頭脳パンさんの書き込み (2006-09-13 19:13) より:
>ad が使われていません。
ad.Load("Sample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null");
↑だと使ってないってことでしょうか?
(一度、投稿したときにアップミスがあって編集してあります。)


んなのしらねーよ。って言いたくなってきた。

スキルアップ/キャリアアップ(JOB@IT)