首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >引发了'System.OutOfMemoryException‘类型的异常。为什么?

引发了'System.OutOfMemoryException‘类型的异常。为什么?
EN

Stack Overflow用户
提问于 2008-12-10 16:22:06
回答 4查看 122.6K关注 0票数 16

我有一个动态查询,它返回大约590,000条记录。它第一次运行成功,但是如果我再次运行它,我仍然得到一个System.OutOfMemoryException。可能发生这种情况的一些原因是什么?

错误发生在这里:

代码语言:javascript
复制
  public static DataSet GetDataSet(string databaseName,string
                                   storedProcedureName,params object[] parameters)
    {
        //Creates blank dataset
        DataSet ds = null;

        try
        {
            //Creates database
            Database db = DatabaseFactory.CreateDatabase(databaseName);
            //Creates command to execute
            DbCommand dbCommand = db.GetStoredProcCommand(storedProcedureName);
            dbCommand.CommandTimeout = COMMAND_TIMEOUT;
            //Returns the list of SQL parameters associated with that stored proecdure
            db.DiscoverParameters(dbCommand);

            int i = 1;
            //Loop through the list of parameters and set the values
            foreach (object parameter in parameters)
            {
                dbCommand.Parameters[i++].Value = parameter;
            }
            //Retrieve dataset and set to ds
            ds = db.ExecuteDataSet(dbCommand);
        }
            //Check for exceptions
        catch (SqlException sqle)
        {
            throw sqle;
        }
        catch (Exception e)
        {
            throw e; // Error is thrown here.
        }
        //Returns dataset
        return ds;
    }

以下是在按钮单击上运行的代码:

代码语言:javascript
复制
protected void btnSearchSBIDatabase_Click(object sender, EventArgs e)
{

        LicenseSearch ls = new LicenseSearch();

        DataTable dtSearchResults = new DataTable();

        dtSearchResults = ls.Search();

        Session["dtSearchResults"] = dtSearchResults;

        Response.Redirect("~/FCCSearch/SearchResults.aspx");
        }
        else
            lblResults.Visible = true;
    }
EN

回答 4

Stack Overflow用户

发布于 2008-12-10 16:25:06

也许您没有处理上一次运行的前一个连接/结果类,这意味着它们仍然在内存中挂起。

票数 7
EN

Stack Overflow用户

发布于 2008-12-10 16:32:37

很明显,你没有处理掉一些东西。

在临时使用实现IDisposable的对象时,请考虑使用" using“命令。

票数 3
EN

Stack Overflow用户

发布于 2012-04-13 14:39:51

尝试尽可能多地分解你的大数据,因为我已经遇到过很多次这种类型的问题。其中我有超过10个Lakh记录,有15列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/356645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档