【发布时间】:2010-10-10 11:54:13
【问题描述】:
我的内存是 4G 物理内存,但是为什么即使我只创建 1.5G 内存对象,我也会出现内存不足异常。任何想法为什么? (我同时看到,在任务管理器的性能选项卡中,内存未满,我也可以在这里输入--所以内存实际上并不低,所以我想我遇到了其他一些内存限制)?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TestBigMemoryv1
{
class MemoryHolderFoo
{
static Random seed = new Random();
public Int32 holder1;
public Int32 holder2;
public Int64 holder3;
public MemoryHolderFoo()
{
// prevent from optimized out
holder1 = (Int32)seed.NextDouble();
holder2 = (Int32)seed.NextDouble();
holder3 = (Int64)seed.NextDouble();
}
}
class Program
{
static int MemoryThreshold = 1500; //M
static void Main(string[] args)
{
int persize = 16;
int number = MemoryThreshold * 1000 * 1000/ persize;
MemoryHolderFoo[] pool = new MemoryHolderFoo[number];
for (int i = 0; i < number; i++)
{
pool[i] = new MemoryHolderFoo();
if (i % 10000 == 0)
{
Console.Write(".");
}
}
return;
}
}
}
【问题讨论】:
-
添加 cmets 解决您的额外问题...抱歉耽搁了;我在飞机上......
-
你真的很酷,马克! :-)
-
你为什么使用
Int32?为什么不int?
标签: c# memory-management out-of-memory