这是一个没有实际意义的问题,因为我分配的金额是错误的。它应该是 400MB 而不是 400GB……对不起!不过答案很好。
我正在尝试对我的一种方法进行单元测试,如果上传了大文件,该方法会引发 OutOfMemoryException。
我的问题是我的单元测试也抛出了这个异常(我猜是出于同样的原因)。
根据任务管理器的说法,如果我正确阅读了信息,我确实有足够的 RAM,所以我不确定为什么我的单元测试会以这种方式失败。
这是各自的单元测试代码:
var data = new List<byte>();
for(UInt64 i = 0; i < 400ul * 1024ul * 1024ul * 1024ul; i += 65536ul)
{
data.AddRange(new byte[65536]); // <-- throws exception here when i = 536870912
}
this.UploadedFileData = data.ToArray();
我在上面的代码之前尝试了以下内容:
var data = new byte[400ul * 1024ul * 1024ul * 1024ul];
但是,这会导致错误:算术运算导致溢出。