为什么有时会运行相同的代码,有时会给我一个例外?
我正在运行测试,查看内存中字符串的限制。我的Main.vb的全部内容都是:
Module Main
Sub Main()
teststring()
End Sub
Sub teststring()
Dim strC As String
strC = New String("C"c, 588060752)
End Sub
End Module
它有时会运行得很好(通常但并非总是在我一分钟左右没有运行它),而其他时间会因异常而失败。
答案 0 :(得分:2)
你实际上没有足够的内存,例如你请求了一个消耗万亿字节的字符串。我认为你不能购买带有太字节RAM的服务器。实际上,我认为CLR无论如何都将大对象限制为2 GB。
你有足够的内存,但有些内存正在被其他进程或进程中的其他对象使用,因此没有足够的可用内存。
你有足够的可用内存,但堆是fragmented并且任何一个地方都没有足够的空间来分配连续的内存。
您超出了系统硬限制(例如,将StringBuilder分配到其最大大小之外)。
这些是很重要的原因。更多细节可以在documentation for OutOfMemoryException中找到。