VisualBasic(コンソールアプリケーション001:GC)

■コンソールアプリケーションのサンプル
前回まで作っていたのが、Windows フォーム アプリケーションだったけど、Visual Studioには他にもいくつかフォーマットがある。今回はそのうちのコンソールアプリケーションのサンプルを試してみる。

プロジェクトの新規作成を行った時点で、すでに「Hello World!」が表示されるコードが入っている。

そのまま Hello World!を表示させてもつまらないので、何かクラスライブラリはないかとMicrosoftのウェブサイトを散策。
.net coreだけ入った状態で使用できるものがいくつか見つかったので、GC(ガベージコレクション)のクラスのサンプルを試してみた。
コードは単純にオブジェクトを作成した後にGCを実施し、実行する前と後のメモリを表示するというもの。GCで使用されなくなったメモリが開放されるため、実施前より後の方が値が小さくなる。

Imports System

Module Program
    Dim maxGarbage = 100000

    Sub Main(args As String())
        Console.WriteLine("===============================================")
        SubMakeSomeGarbage()
        Console.WriteLine("Memory used before collection:{0:N0}", GC.GetTotalMemory(False))
        GC.Collect()
        Console.WriteLine("Memory used after full collection:{0:N0}", GC.GetTotalMemory(False))
        Console.WriteLine("===============================================")
    End Sub

    Public Sub SubMakeSomeGarbage()
        Dim vt As Version
        For index As Integer = 1 To maxGarbage
            vt = New Version()
        Next
    End Sub
End Module

実行結果が下のもの。
デバックを行うと、新しくデバッグコンソールが表示され、Console.WriteLineで指定した内容が表示される。

maxGarbageの値を10倍にしてみると、GC前の値も増える。
プログラムを動かすために割り当てるメモリ領域が増えているということだろうけど、この数字自体に意味があるかはよく分からない。

ちなみに、maxGarbage = 2147483647で行うと、オーバーフローのエラーが出る。数値を入れる変数の限界らしい。
System.OverflowException
HResult=0x80131516
Message=Arithmetic operation resulted in an overflow.
Source=Microsoft.VisualBasic.Core

今回は、コンソールアプリケーションの簡単なサンプル作成まで。