|
> -加えてDiposeされる順番は取得した順(or逆順)とは限らない。後始末の順序は制御不能。
順番が制御不能であることによって不都合を生じるかどうかは、カプセルされているアンマネージリソースが「どんなものか」に依存します。
> ほっといてGCに任せるのが良いのか・・・
放っておいて問題がないかどうかも、カプセルされているアンマネージリソースが「どんなものか」に依存します。
ですが、一般的にリソースの使用は最小限度にとどめておくのが吉であるため、不要なリソースは速やかに解放するべきです。
>それとも「GC」はメモリ以外のリソースについても管理し、「GC」が >走るのでしょうか?
いいえ。GC はマネージヒープから取得されたメモリしか管理しません。
だからこそ、うっちゃらかしになったアンマネージリソースの後始末をするべき「ファイナライザで Dispose() 呼び出しを行うこと」という規約があるのです。
>システムリソースとかですかね?
などなどですね。これも、カプセルされているアンマネージリソースが「どんなものか」次第です。
>けどよくよく考えると、いくらGCはしるといっても、ヒープ領域しかみてないなら、 >GCはしんべやっていってほっといたら、GDIとかのシステムリソース先に食いつぶしそうですが。
GC がクラスインスタンスを解放する直前にファイナライザを呼び出し、ファイナライザ内で Dispose() 呼び出しが行われることによって、GC によってクラスインスタンスが解放されるのと同期して、クラスインスタンがカプセルするアンマネージリソースの解放が行われます。
|