这是一个有趣的事情。首先进行设置:
- 8GB 内存
- Windows 7 专业版 x64
- VS2010旗舰版
我有一个内存密集型算法,可以使用 LINQ/PLINQ 处理数据。最初的实现依赖于 PLINQ。单元测试成功。但值得注意的是,在尝试查看使用 PLINQ 与 LINQ 相比获得了哪些性能优势时,当禁用并行性时,相同的测试会失败并出现 OutOfMemoryException。
有什么合理的解释吗?我可以始终如一地重现这一点。我没有检查,但我是否可能耗尽的不是内存,而是一些根据线程模型分配不同的资源?有想法吗?
最佳答案
.net 中的单个对象限制为 2 GB,即使在 64 位上也是如此。如果您不使用 PLINQ,我会猜测某些对象(例如列表)变得大于 2 GB,从而崩溃。使用 PLINQ - 因为它分割了它的工作 - 我猜测它会创建多个小于 2 GB 的列表。
请发布一些代码,没有它就不可能提供任何详细信息。
关于c# - PLINQ 与 LINQ : OutOfMemoryException for LINQ but not PLINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073625/