我使用C#读取大文件时出现内存不足异常。我需要修改代码,但暂时可以像在Java中一样增加堆大小(作为短期解决方案)吗?
.Net会自动处理这个问题。
看起来你已经达到了一个.Net进程可以用于其对象的内存限制(在32位机器上,通过使用/3GB引导开关,标准为2GB或3GB。感谢Leppie和Eric Lippert提供的信息)。
重新考虑你的算法,或者考虑更换64位机器可能会有帮助。
不,这是不可能的。这个问题可能是由于您正在运行32位操作系统且内存过于分散所造成的。尝试不要将整个文件加载到内存中(例如逐行处理),或者当您确实需要完全加载它时,通过将其分成多个较小的部分来加载。
很抱歉,您无法在这里查看我的答案:.NET运行时是否有类似于Java中的-Xmx/-Xms的方法来预分配堆内存?
对于阅读大型文件,通常最好从磁盘流式传输它们,按块读取并分段处理,而不是一次性加载整个文件。