我支持一个使用大量字符串连接的应用程序,我相信这是内存泄漏的原因,最终导致 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
我相信在第 10 行内存中有九个字符串,因为 String 是一个不可变对象,但只有一个对 String Test1 的引用,其中包含:“你好,我的名字是 Joe Blogs,你的名字是什么?”。我的问题是;当它们超出范围时,垃圾收集器是否会拾取所有这些字符串?即当子例程完成运行时。我似乎有内存泄漏,我认为我真的应该使用 StringBuilder 对象。