【发布时间】:2011-09-16 19:00:49
【问题描述】:
我在尝试读取 ASP.net 网站中的 16MB 文本文件时遇到了 ReadToEnd 引发 OutOfMemory 异常的问题。
在调查原因时,我遇到了我正在做的 File.ReadAllText,但我并不关心如何获取文本。
但是查看ReadAllText 的文档并没有提到OutOfMemory 异常的可能性。这是为什么?它的实现方式是否与 ReadToEnd 不同,从而不太可能耗尽内存,或者如果内存不足,它是否会引发其他异常?
编辑添加代码只是为了显示我目前在做什么:
StreamReader inputFile = System.IO.File.OpenText(filename);
string cacheData = inputFile.ReadToEnd();
inputFile.Close();
有时我在第 2 行得到 OutOfMemory 异常。没有进行解析,文件只有 16M 的文本,我知道这没什么奇怪的。
重新启动 IIS 通常会修复它。但是当我收到错误时,我有 2G 的可用 RAM,IIS 可能达到了一些内部限制? w3wp.exe进程通常使用350-500M(这是Windows Server 2003上的IIS 6)
【问题讨论】:
-
很多代码都会抛出OutOfMemoryException,不仅仅是ReadAllText...
-
@minitech:为什么?这不是关于他的代码的问题。
-
喘息...有没有可能没有记录所有异常?
-
@spender:我只是想看看他是不是做错了;读取 16MB 文件通常不会导致计算机内存不足。
-
添加了我的代码和问题的更多上下文,但我认为这更像是 ServerFault 的问题。
标签: c# .net file-io out-of-memory