- - PR -
[C#]リモートオブジェクトとガベコレの関係について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-28 22:08
いつもお世話になっています。
リモートオブジェクトをインスタンス化するにあたり 長時間放置されても大丈夫なように、アプリケーション設定ファイルの方で leaseTime をかなり長めに設定しています。 MSDNには、インスタンスが生成されてから、この設定された時間を過ぎると (他にも設定する属性はありますが) ガベコレが回収するみたいに書かれています。 この場合、設定された時間が過ぎていなくても、インスタンスがどこからも 参照されていない状態になれば、普通のオブジェクトのように ガベコレが回収してくれるんでしょうか? それとも、どこからも参照されてなくても、設定した時間が過ぎるまでは 回収されず残ったままになるのでしょうか? ご教授宜しくお願い致します。 [開発環境] WindowsXP Visual Studio 2005 | ||||
|
投稿日時: 2006-05-28 22:56
実際に試されてみてはいかがでしょう? <lifetime leaseTime="1D"... /> などにしておき、 大きめのオブジェクトに対してテストしてみましょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-05-29 00:10
リモートから参照されないことが判断できるのであれば、そもそもリースの仕組みがいらないような気がしますが。(RemotingはCOMとちがってリファレンスカウンタでの実装ではない)
確実にGC対象にしたのなら対象のCAOにIDisposableを実装して、Disposeでメンバーにnullを設定するような方法が考えられると思います。Disposeをクライアントから呼び出せばその時点でメンバーはGC対象になりますよね。 |
1