C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.91533 の関連記事表示

<< 0 >>
■91533  Re[7]: メモリリークに関して
□投稿者/ kiku -(2019/07/04(Thu) 09:08:37)
    No91530 (魔界の仮面弁士 さん) に返信
    > 一方 .NET Comapct Framwork の場合、ソースコードは提供されていませんが、
    > No91525 の実験結果から、Form.Dispose(bool) は特に存在しておらず、
    > 直接 Control.Dispose(bool) がそのまま呼ばれていることが確認できました。

    だとすると、
    子コントロールは明示的にDisposeしなくても良く、
    子コントロールが保持するFontなどのアンマネージリソースのみをDisposeすれば良いのでしょうか?

    > Nothing の代入有無で、本当に解放状況が変化するかどうかを確認してみました。
    > 端末を再起動して、空きメモリが十分に確保されている状態において、
    > Button1 でモードレス フォームを表示させた後、
    > Button2 でそれを Close させています。
    > すると、Close 直後の ★の行の Nothing 代入がコメントアウトされていた場合、
    > Form2 および LabelEx が直ちに Dispose されないケースが確認できました。
    > しかし Nothing 代入するようにした場合は、Button2 の時点ですぐに Dispose されるようになりました。
    > ただ、何度も実験を繰り返すと空きメモリが減ってくるようで、
    > その場合はどうやら GC が発動するらしく、Nothing 代入せずとも
    > Dispose される結果になるようです。

    そうすると、子コントロールは明示的にDisposeを行って、
    子コントロールにnull(今回C#なため)を設定し、
    子コントロールが保持するアンマネージリソースに対しても明示的にDisposeを行い、
    その参照もnullに設定するのが良さそうと理解しました。
記事No.91509 のレス /過去ログ158より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -