我有超过1 000 000的大记录,我想将这些数据填充到DataTable中,但在填写DataTable时,它会抛出像System.OutOfMemoryException
这样的异常。我怎么能解决这个错误?
我还有4 GB RAM和64位操作系统。
答案 0 :(得分:5)
如果您需要内存中的所有数据,并且您的应用程序池是x64,并且您使用的是.NET 4.5,则可以使用gcAllowVeryLargeObjects
指令...为ASP.NET执行此操作,您需要为自己的应用池添加自己的aspnet.config
文件(有关详情,请参阅this link)并为启动设置此配置:
<configuration>
<runtime>
<gcAllowVeryLargeObjects enabled="true" />
</runtime>
</configuration>
也就是说,在内存中同时处理如此大的DataTable
更有可能无法实现,特别是对于Web应用程序(通常适用于多个用户)。
占用了大量内存(可能是每个用户),而你更可能只在任何给定时间处理该内存的一小部分内容,这只是一种浪费,你可能应该考虑一种不同的处理方式问题,而不是强制.NET允许内存中更大的对象。