メモリについての勉強2
以下3点について納得するために、診断ツールを使ってメモリの状態を確かめてみる。
・値型の変数に値を入れてもヒープ全然増えないよ。
・クラスをnewするとヒープで使用しているメモリが増えるよ。
・外部ファイルを読み込むとヒープメモリ増えるよ & 解放すると減るよ。
・確認するソースコード
簡単なクラスをnewしたり、外部ファイルを読み込んだりする。
class Program { static void Main(string[] args) { //値型 int a = 1; //参照型 var test = new Test(); //ファイルがあったら読み込む var filepath = @"C:\Users\jirou\Desktop\データ.txt"; if (File.Exists(filepath)) { using(var reader=new StreamReader(filepath, Encoding.UTF8)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); Console.WriteLine(line); } } } } }
・診断ツールの表示
visual stadioのデバック⇒ウィンドウ⇒診断ツールの表示。
下のような画面が出てくる
こっから確認結果
・値型
上、int a=1の前。下、int a=1後。
メモリの結果は変わらず。ってかむしろ下がってる・・・
・値型の変数に値を入れてもヒープ全然増えないよ。ってことですね。
・参照型
若干増えてる・・・
+0.01kBをクリックすると・・・
_20211028.testによってメモリが増えてることが分かった。
・クラスをnewするとヒープで使用しているメモリが増えるよ。ってことですね。
・外部ファイル読み込み
using~の部分。usingに入るとテキストファイルを読み込む。usingから出ると解放されるはず。
なのでメモリはusingに入ると増え、usingから抜けると解放されると思うが、どうなるか・・・
上、usingに入る前。下 usingに入った後。
予想通りメモリが増えてる。増分をクリックすると・・・
stream readerとかfileStream等が増えている。
正直ここらへんの理解は十分ではないんだけど、ファイル読み込みに関係あるクラスだから
増えてるのか・・・
そのあとwhile文を抜けて43kBまで増加
その後、usingを抜けると・・・
減った!減少分をクリックすると・・・
さっき増えたstream readerとかfileStream等が減少している。
なるほど。外部ファイルを読み込むとヒープメモリ増えるよ & 解放すると減るよ。ってことですね。
まとめ
メモリが増えたり減ったりするさまを確認できました。
結果は当然事前に調べたとおりだったけど、自分で確認できたほうが理解につながる気がするし
診断ツールの使い方もなんとなくわかったのでまぁよかったかな。