多くの文字列連結を使用するアプリケーションをサポートしていますが、これが最終的に OutOfMemory 例外を引き起こすメモリ リークの原因であると考えています。以下のコードをご覧ください。
Public Sub ConcatenateString() As String Dim Test1 As String
Test1 = "Hello"
Test1=Test1 & "my"
Test1=Test1 & "name"
Test1=Test1 & "is"
Test1=Test1 & "joe"
Test1=Test1 & "blogs"
Test1=Test1 & "what"
Test1=Test1 & "is"
Test1=Test1 & "yours?" 'line 10
return Test1
End Sub
String は不変オブジェクトであるため、メモリ内には 10 行目に 9 つの String があると思いますが、「Hello my name is Joe Blogs what is yours?」を含む String Test1 への参照は 1 つだけです。私の質問は; これらの文字列はすべて、範囲外になったときにガベージ コレクターによって取得されますか? つまり、サブルーチンの実行が終了したときです。メモリ リークが発生しているようで、本当に StringBuilder オブジェクトを使用する必要があると考えています。