C#哈希集生成系统.OutOfMemoryException偶尔但重复

C#哈希集生成系统.OutOfMemoryException偶尔但重复,c#,asp.net,.net,C#,Asp.net,.net,所以我们有两个项目——一个核心项目,我们可以称之为MainProject,它有一个名为LoadData()的函数,将33751107个字符串文本记录加载到HashSet中,一次加载一个;一个单元测试项目,我们可以称之为TestProject,它对LoadData运行单元测试(它引用了MainProject) 如果我们在TestProject中运行单元测试,它将成功地通过并加载所有33751107条记录,没有错误 但是,如果我们在MainProject启动期间运行LoadData()函数,它会崩溃

所以我们有两个项目——一个核心项目,我们可以称之为MainProject,它有一个名为
LoadData()
的函数,将33751107个字符串文本记录加载到
HashSet
中,一次加载一个;一个单元测试项目,我们可以称之为TestProject,它对
LoadData
运行单元测试(它引用了MainProject)

如果我们在TestProject中运行单元测试,它将成功地通过并加载所有33751107条记录,没有错误

但是,如果我们在MainProject启动期间运行LoadData()函数,它会崩溃,出现以下异常:

System.OutOfMemoryException:引发了类型为“System.OutOfMemoryException”的异常

有趣的是,它在成功加载23986243条记录并尝试加载下一批记录后崩溃

这很奇怪。
LoadData
函数如何在MainProject(这是一个ASP.NET 4.6.1 web项目)和NOT中崩溃,而TestProject(这是一个.NET Framework 4.7.2单元测试项目,使用MSTest Framework)只是运行相同的
LoadData
函数

我甚至尝试将MainProject升级到ASP.NET4.7.2(没有效果,仍然崩溃)。MainProject的web.config或TestProject的app.config中没有任何特殊内容。我尝试将此添加到web.config:

这并没有改变或解决问题。这种行为不是随机的,也不是间歇性的——它每次都会重复发生。我没有主意了

有人知道为什么会这样吗

任何帮助都将不胜感激


更新:我尝试创建一个SuperHashSet类,该类创建多个hashset的集合,每个hashset的最大项数为10000000项。即使它使用的是~3+哈希集而不是一个大的哈希集,它也会在完全相同的点上以相同的错误终止。有什么想法吗?

感谢@GiddyaNaya的回答-问题是该项目没有按照x64进行建设。在检查了所有的配置设置后,我发现在2个级别中,它仍然设置为任何CPU。再次感谢您在这方面的帮助。

这些23986243条记录需要多少内存?所以它总是在这些记录之后?如果在加载之前反转/洗牌订单会发生什么?您是否在同一台机器上运行这两个命令?@zaitsman是的,我在同一台机器上运行这两个命令确保MainProject是x64