ADO Large DataSet 抛出内存不足异常
ADO Large DataSet throws out of memory exception
我有一个巨大的 dataset
(大约 150 万条记录)抛出一个 "out of memory exception",dataset
似乎从数据库加载相当快(2-3 秒)但是当调用 Merge() 方法时,应用程序崩溃并抛出 "Out Of Memory" 异常。
DataSet dsTemp = setupBpc.GetAllData(); << THIS WORKS
if (dsTemp != null)
{
dsSetupData.Merge(dsTemp); << OOM Exception
}
该应用程序是旧的,我有点坚持使用 ADO,因为重构将是一项艰巨的任务。这是一个使用 Janus GridEX
的 winforms
应用程序,我一直无法找到任何方法来使用 GridEX
组件进行分页。
但让我难过的是,这似乎不是 dataset
本身的问题,它正在从数据库中检索并毫无问题地加载。 Merge() 方法似乎有问题导致失败。
您可能 运行 内存不足,因为您正在合并数据并且需要更多内存。想一想:首先你持有原始数据集,然后合并,这基本上是将原始数据集复制到新数据集中。因此占用两倍的内存。
我确定 Janus GridEX 支持数据检索的分页参数,您应该在整个数据层实现这一点。我认为此代码更改是不可避免的,因为它无法扩展,而且您很幸运,之前没有遇到此问题!
我有一个巨大的 dataset
(大约 150 万条记录)抛出一个 "out of memory exception",dataset
似乎从数据库加载相当快(2-3 秒)但是当调用 Merge() 方法时,应用程序崩溃并抛出 "Out Of Memory" 异常。
DataSet dsTemp = setupBpc.GetAllData(); << THIS WORKS
if (dsTemp != null)
{
dsSetupData.Merge(dsTemp); << OOM Exception
}
该应用程序是旧的,我有点坚持使用 ADO,因为重构将是一项艰巨的任务。这是一个使用 Janus GridEX
的 winforms
应用程序,我一直无法找到任何方法来使用 GridEX
组件进行分页。
但让我难过的是,这似乎不是 dataset
本身的问题,它正在从数据库中检索并毫无问题地加载。 Merge() 方法似乎有问题导致失败。
您可能 运行 内存不足,因为您正在合并数据并且需要更多内存。想一想:首先你持有原始数据集,然后合并,这基本上是将原始数据集复制到新数据集中。因此占用两倍的内存。
我确定 Janus GridEX 支持数据检索的分页参数,您应该在整个数据层实现这一点。我认为此代码更改是不可避免的,因为它无法扩展,而且您很幸运,之前没有遇到此问题!