いつもお世話になっております。さっそくで恐縮ですが質問させてください。
アプリケーションの概要ログを表示するため、フォームにTextBoxコントロールを配置してAppendText()メソッドにより文字列を追加しています。また、日付が変わるときにTextBoxの文字列をファイルに書き出し、Clear()メソッドにより文字列をクリアしています。
この方法で、長期(6ヶ月以上)アプリケーション実行しているとWorking Setが上昇し続けます。
そこで、日替わりで文字列をファイルに書き出した後、TextBoxのインスタンスを破棄して再生成するようにしました。
以下の手順にてTextBoxのインスタンスを破棄、再生成しています。
1.フォームのControlsからTextBoxを削除する(Remove()メソッドにより削除)。
2.TextBoxのDispose()メソッドを呼ぶ。
3.TextBoxの変数にnull代入。 <- ここで参照がきれると考えています。
4.TextBoxのインスタンスを生成する。
5.TextBoxの初期設定。
6.フォームのControlsにTextBoxを追加する(Add()メソッドにより追加)。
破棄して再生成するのは、参照をきり、ガベージの対象にとの考えからです。しかし、実際には、回収されず、Working Setは、上昇しています。
お聞きしたいのは、ガベージの対象とするためにインスタンスを破棄して再生成するのは、間違った考えでしょうか?
または、インスタンスの破棄の考え方が間違えているのでしょうか?
OS:Windwos 7
言語:C#
開発ツール:Visual Studio 2005
実行環境:.NET Framework 2.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/20 14:07
2017/01/23 02:37
2017/01/23 03:15