2

这是一个有趣的。首先是设置:

  • 8GB 内存
  • 视窗 7 专业版 x64
  • VS2010 终极版

我有一个内存密集型算法,它使用 LINQ/PLINQ 处理数据。最初的实现依赖于 PLINQ。单元测试成功。但值得注意的是,在尝试查看我从使用 PLINQ 与 LINQ 获得什么样的性能优势时,当并行性被禁用时,同样的测试会因 OutOfMemoryException 而失败。

有什么合理的解释吗?我可以始终如一地重现这一点。我没有检查,但我可能不是内存不足,而是一些资源根据线程模型分配不同?想法?

4

1 回答 1

3

.net 中的单个对象限制为 2 GB,即使在 64 位上也是如此。如果您不使用 PLINQ,我猜想某些对象(例如,一个列表)变得大于 2 GB 并因此崩溃。使用 PLINQ——因为它拆分了它的工作——我猜它会创建多个小于 2 GB 的列表。

请发布一些代码,没有它就不可能提供任何细节。

于 2011-11-10T05:26:34.523 回答