■29918 / ) |
Re[2]: newについて |
□投稿者/ T.K (4回)-(2008/12/16(Tue) 15:08:28)
|
■No29912 (たくボン さん) に返信 > ■No29905 (T.K さん) に返信
ご返事ありがとうございます。
>>1.上記の場合、Newするたびに、ファイルを必ず読み出しているのでしょうか? > どこでファイルの読込を行っているかですね。コンストラクタ内でファイルを開いているなら、newするたびに読込されます。 言葉尻を捕まえて質問するようで申し訳ないのですが、とても気になっている部分なので、質問させてください。 コンストラクター以外の所でnewすれば、読込みは行われないと思っていいのでしょうか? たとえば、各画面の.Load()のところでnewしていれば読込みは行わないと思っていいのでしょうか?
>>2.親Form→子Form→孫FormとFormを開く毎にメモリー空間を占有していっているのでしょうか? >>(タスクマネージャーで確認しても、必ずメモリー空間を占有しているようには見えませんでした。) > 何がメモリを消費していると思っていますか?画面?それとも日本・他国用に用意した文字列コレクション? > タスクマネージャーの何を見てそう判断されたのかわかりませんが、不安ならデータサイズを計測してみては? > おそらく、TKさんが思っているほどメモリは使ってないと思いますよ。 日本語・他国語用に用意した文字列コレクションが、親Formに1つ、子Formに1つ、孫Formに1つと増えていくことを恐れています。
>>3.どのタイミングでDispクラスで占有してるメモリー空間は開放されるのでしょうか? >>(タスクマネージャーではいつ開放されるタイミングが一定ではなく、よくわかりませんでした。) > > GCで管理するDispクラスのインスタンスへの参照カウンタが0になった後、決められたタイミングで解放されます。 > GCの動作を知りたいなら書籍を探せばありますよ。 ありがとうございます。調べてみます。
> 本来、.NETではプログラマがメモリ管理を意識しないでも作成できるのが特徴なので、プログラマが意識する必要はありません。(ただし、勉強したいというなら別です。しっかり勉強してください)
>>4.このような場合、どのように対応していくのがC#としてベストな方法なのでしょうか? >> (グローバル変数で対応するのは、オブジェクト指向ぽっくないような気がするし、 >> かといって、毎回Newするのも速度やメモリースペース的に、ベストではないような気もします。) > > うんうん。こうやって色々考えてる姿はいいですね。 > カルチャとリソース、【多国】語対応で検索してみては?きっと望んでいる機能がありますよ:-) アドバイスありがとうございます。
|
|