我有一个简单的 asp.net 网站,它将一个大文本文件读入内存并进行一些处理。下面是引发 OOM 异常的代码。在阅读了大约 350k 行之后,我得到了这个错误。每行平均有 1k 个字符。 IIS 或 ASP.Net 网站是否有内存限制?我的服务器仍然有足够的物理内存。谢谢。
List<string> geos = new List<string>();
using (StreamReader geoReader = new StreamReader(File.OpenRead("file.txt")))
{
while (geoReader.EndOfStream == false)
{
try
{
geos.Add(geoReader.ReadLine());
}
catch (Exception ex) { }
}
}
最佳答案
您的工作进程很可能配置为 32 位 (x86)。在这种情况下,您至少会在大约 2GB 的已分配对象上遇到 OOM,但很可能更早。
如果您确实需要在内存中加载超过 1GB 的对象,请考虑在 64 位进程中运行您的代码。
注意:以上假设您实际上内存不足,而不是尝试一次分配 2GB 以上的内存 - 默认情况下会抛出 OOM(据我所知,最新的 .Net 允许更大的分配)。
关于c# - 什么导致asp.net内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14928353/