0

在我的 .net 应用程序中,我使用 LINQ-to-SQL 从数据库中获取一些数据。数据量一点也不大(10行数据)。但是我经常在我的函数中捕获“system.outofmemoryException”,即使服务器中还有空闲内存。有趣的是,我仍然可以使用 ADO 函数从其他页面获取数据。

应用程序池重新启动后,该问题将得到解决。不时地,问题再次发生。你知道我应该如何调试这个场景吗?

注意:我对所有数据上下文连接都使用了“使用”块。从字面上看,所有数据上下文将在使用后被丢弃。

下面是代码。很简单。

using (StoreDataContext db = new StoreDataContext(conn)) 
{
     var list = from category in db.ProductCategories 
                select category;

     ddlCategory.DataSource = list.Distinct().ToList();
     ddlCategory.DataTextField = "CategoryName";
     ddlCategory.DataValueField = "CategoryName";
     ddlCategory.DataBind();
}
4

2 回答 2

1

当没有足够的内存来继续执行程序时抛出异常。

要查看您的消息,请参阅 OutOfMemoryException 构造函数。

原因:

  1. 你有一个无限循环。

  2. 您有很多数据,请在加载上下文和实体集时验证您的查询 sql。

于 2012-08-02T08:14:05.760 回答
1

我的建议是你会使用内存分析工具,如JetBrains dotTraceRedGate 的 Ants Profiler(它们在市场上更多)

个人经验,即使我在我的 Web 应用程序上遇到了同样的问题,并且 dotTrace 为我追踪了写得不好的代码

于 2012-08-02T08:14:14.653 回答