メモリについての勉強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のデバック⇒ウィンドウ⇒診断ツールの表示。
下のような画面が出てくる
f:id:mani1414:20211028233335p:plain


こっから確認結果
・値型
上、int a=1の前。下、int a=1後。
 メモリの結果は変わらず。ってかむしろ下がってる・・・
f:id:mani1414:20211029225842p:plain
・値型の変数に値を入れてもヒープ全然増えないよ。ってことですね。

・参照型
若干増えてる・・・
f:id:mani1414:20211029230114p:plain
+0.01kBをクリックすると・・・

f:id:mani1414:20211029230354p:plain
_20211028.testによってメモリが増えてることが分かった。
・クラスをnewするとヒープで使用しているメモリが増えるよ。ってことですね。


・外部ファイル読み込み
using~の部分。usingに入るとテキストファイルを読み込む。usingから出ると解放されるはず。
なのでメモリはusingに入ると増え、usingから抜けると解放されると思うが、どうなるか・・・

上、usingに入る前。下 usingに入った後。
f:id:mani1414:20211029230850p:plain
予想通りメモリが増えてる。増分をクリックすると・・・

stream readerとかfileStream等が増えている。
正直ここらへんの理解は十分ではないんだけど、ファイル読み込みに関係あるクラスだから
増えてるのか・・・
f:id:mani1414:20211029231000p:plain

そのあとwhile文を抜けて43kBまで増加
f:id:mani1414:20211029232147p:plain


その後、usingを抜けると・・・
f:id:mani1414:20211029231827p:plain

減った!減少分をクリックすると・・・

さっき増えたstream readerとかfileStream等が減少している。
f:id:mani1414:20211029232248p:plain

なるほど。外部ファイルを読み込むとヒープメモリ増えるよ & 解放すると減るよ。ってことですね。


まとめ
メモリが増えたり減ったりするさまを確認できました。
結果は当然事前に調べたとおりだったけど、自分で確認できたほうが理解につながる気がするし
診断ツールの使い方もなんとなくわかったのでまぁよかったかな。