为什么相同的代码有时会运行,有时会给我一个异常?
我只是在运行一个测试,查看内存中字符串的限制。我的整个主要.vb内容如下:
Module Main
Sub Main()
teststring()
End Sub
Sub teststring()
Dim strC As String
strC = New String("C"c, 588060752)
End Sub
End Module
它有时会运行良好(通常但并不总是在我一分钟左右没有运行它时),而其他时候会失败并出现异常。
"内存不足"可能发生在以下情况下
- 您
实际上没有足够的内存,例如,您请求了一个将消耗一万亿字节的字符串。 我认为您不能购买具有TB级RAM的服务器,现在还不能。 实际上,我相信 CLR 无论如何都将大型对象限制为 2 GB。
您有足够的内存,但其中一些内存正由其他进程或进程中的其他对象使用,因此没有足够的可用内存。
您有足够的可用内存,但堆是碎片的,并且任何一个位置都没有足够的空间来分配连续内存。
您超出了硬系统限制(例如,分配的 StringBuilder 超出了其最大大小)。
这些是重要原因。 更多细节可以在 OutOfMemoryException 的文档中找到。