c# - 什么导致asp.net内存不足异常

标签 c# asp.net out-of-memory streamreader

我有一个简单的 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/

相关文章:

memory - 你能在 Kubernetes 上的 .NET Core 中触发 OOM 异常的自动内存转储吗?

c# - .NET 中的点有多贵?

c# - 存储 Windows Phone 的设置

javascript - 无法使用请求中的自定义 header 跨域加载 Angular 模板

asp.net - 页面中包含的控件的验证不会使整个页面失效

android - 缓存位图 - 检查当前 VM 预算

delphi - 如何解决内存分段并强制FastMM释放内存给OS?

c# - 检索SQL语句的输出参数

c# - WPF 中的自定义列表框

c# - 具有大量数据的客户端缓存 DropDownList?