伙计们我试图一次在C#winforms中加载200万行,但我得到System.OutOfMemoryException
。现在我的系统有4 GB RAM(core2duo 2.4ghz),加载DataGridView
(通过任务管理器观察)时系统内存消耗达到最大67%,应用程序抛出此异常。DataGridView内存不足?
这是为什么?不能DataGridView
一次处理200万行?或者是我的个人电脑没有能力?
P.S.我只是用这个测试目的,我知道分页,所以请不要问我为什么我试图一次加载所有的行。
在DataGridView
生成测试行代码: -
DataTable dt = new DataTable();
for (int i = 0; i < 10; i++)
{
dt.Columns.Add(i.ToString());
}
for (int j = 0; j < 2000000; j++)
{
DataRow row = dt.NewRow();
for (int k = 0; k < 10; k++)
{
row[k] = Guid.NewGuid().ToString();
}
dt.Rows.Add(row);
}
dataGridView1.DataSource = dt;
这可能是你感兴趣的:http://programmers.stackexchange.com/questions/155892/practical-size-limits-of-a-datatable-in-c –
@ user3331470那么我最近发现自己把9000将一行代码放到一个DataGridView中,用于我正在制作的一个Mercurial diff工具,并发现性能很糟糕。所以我[虚拟化](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.virtualmode(v = vs.110).aspx)它。也许考虑这样做。我还会回顾一下,如果你可以在没有'DataTable'的情况下做到这一点,那么可以使用一个简单的'List'而不是? –
在VS12中运行性能分析时,我得到了这个似乎是原因的错误: DA0018:(最大)所有堆中的#字节数= 1,643,798,088.00;托管内存分配接近32位进程的默认限制。你的应用程序可能是内存限制的。 – NewbieProgrammer