我在大型文本文件(~300 MB)上使用StreamReader
并在循环中调用ReadLine()最终会引发一个奇怪的ArgumentOutOfRangeException
:
Index and count must refer to a location within the buffer.
Parameter name: bytes
堆栈跟踪是:
at System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteCount,
Char[] chars, Int32 charIndex, Boolean flush)
at System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteCount,
Char[] chars, Int32 charIndex)
at System.IO.StreamReader.ReadBuffer()
at System.IO.StreamReader.ReadLine()
....
这是一些奇怪的内存错误吗?它没有抛出OutOfMemoryException
所以我有点迷失了。
它发生在第2000行左右。到那时,即使它继续成功的ReadLine(),它也开始在其他地方抛出奇怪的异常。所以某处可能存在内存泄漏,但有哪些内容可以查看ReadLine()
或StreamReader
吗?
我的文本文件中的每一行都是24个字符。
答案 0 :(得分:1)
如果问题特定于StremReader.ReadLine(),则可能是: