【发布时间】:2015-07-22 20:14:06
【问题描述】:
下面的 VB .net 代码给了我一个内存不足的异常。有人知道为什么吗?
Dim vArray As ILArray(Of Double) = ILMath.rand(10000000)
Using ILScope.Enter(vArray)
For i As Integer = 1 To 100
vArray = ILMath.add(vArray, vArray)
Next
End Using
非常感谢。
【问题讨论】:
-
“内存泄漏”和“内存不足异常”是完全不同的东西。
-
没有
Using ILScope.Enter(vArray)怎么样?这是否将所有数组保留在内存中直到End Using? -
rand(10000000) 尝试创建一个包含 10^14 个元素的矩阵。不知道这是不是有意的,但它几乎不会成功,不是吗?
-
非常感谢您的回答。删除
Using ILScope.Enter(vArray)没有帮助。ILMath.rand(10000000)创建一个 10^7 的向量,可以轻松放入内存。从调试中我知道第一次分配有效。前 10 次迭代也没有问题。只有在第 11 次迭代中,我才得到内存不足异常。因此,代码似乎在每次迭代中分配内存而不释放旧内存。据我了解,这称为内存泄漏。
标签: vb.net memory-management memory-leaks garbage-collection ilnumerics