ADO Large DataSet抛出内存不足异常

时间:2016-02-12 16:01:54

标签: c# winforms ado.net

我有一个巨大的dataset(大约150万条记录)会导致内存异常&#34; DataSet dsTemp = setupBpc.GetAllData(); << THIS WORKS if (dsTemp != null) { dsSetupData.Merge(dsTemp); << OOM Exception } 似乎很快从数据库加载(2- 3秒)但是当调用Merge()方法时,应用程序崩溃并抛出一个&#34; Out Of Memory&#34;异常。

winforms

应用程序已经过时了,我对ADO有些困惑,因为重构将是一项艰巨的任务。它是Janus GridEX使用GridEX的{​​{1}}应用程序,但我无法找到任何方式对dataset组件进行分页。

但是让我感到困惑的是,这似乎不是{{1}}本身的问题,而是从数据库中检索并加载而没有问题。 Merge()方法似乎存在导致此失败的原因。

1 个答案:

答案 0 :(得分:1)

由于您正在合并数据,因此可能会耗尽内存,因此需要更多内存。想一想:首先你拿着原始的数据集,然后合并,这基本上是将原始数据集复制到新的数据集中。因此占用了两倍的内存。

我确信Janus GridEX支持用于数据检索的分页参数,您应该通过整个数据层实现这一点。我认为这个代码更改是不可避免的,因为这不会扩展,你很幸运没有提前解决这个问题!