使用C#在asp.net中填充DataTable时发生System.OutOfMemoryException错误

时间:2015-03-25 07:15:07

标签: c# asp.net

我有超过1 000 000的大记录,我想将这些数据填充到DataTable中,但在填写DataTable时,它会抛出像System.OutOfMemoryException这样的异常。我怎么能解决这个错误? 我还有4 GB RAM和64位操作系统。

1 个答案:

答案 0 :(得分:5)

如果您需要内存中的所有数据,并且您的应用程序池是x64,并且您使用的是.NET 4.5,则可以使用gcAllowVeryLargeObjects指令...为ASP.NET执行此操作,您需要为自己的应用池添加自己的aspnet.config文件(有关详情,请参阅this link)并为启动设置此配置:

<configuration>
  <runtime>
    <gcAllowVeryLargeObjects enabled="true" />
  </runtime>
</configuration>

也就是说,在内存中同时处理如此大的DataTable更有可能无法实现,特别是对于Web应用程序(通常适用于多个用户)。

占用了大量内存(可能是每个用户),而你更可能只在任何给定时间处理该内存的一小部分内容,这只是一种浪费,你可能应该考虑一种不同的处理方式问题,而不是强制.NET允许内存中更大的对象。