【发布时间】:2013-01-06 15:20:38
【问题描述】:
class Node
{
public Node next;
public int data;
public Node(int d)
{
this.data = d;
}
}
class Program
{
static void Main(string[] args)
{
Node n1 = new Node(10);
Node n2 = null;
Node root = n1;
int count = 1;
while (count < Int32.MaxValue -1)
{
n2 = new Node(count); //Exception
n1.next = n2;
n1 = n2;
count++;
}
}
当系统内存达到 3 of 16GB 时发生异常
【问题讨论】:
-
Int32.MaxValue 是一个很大的值 2^31-1 = 2 147 483 647,你需要将它与每个节点的内存相乘。
-
您的系统内存已用完异常 - 都在错误消息中!
-
如果你创建了 21 亿个东西,你可能想重新考虑如何存储它,也许你应该使用 SQL,但是我希望看到这些节点被写入一个 xml 文件:)跨度>
-
您运行的是 32 位操作系统,并启用了 4GT 调整吗?这可以解释为什么当进程的虚拟内存达到 3GB 时会出现异常。
标签: c# .net memory linked-list