这是一个有趣的故事。首先,设置:
我有一个内存密集型算法,它使用LINQ/PLINQ处理数据。最初的实施依赖于PLINQ。单元测试成功。但是值得注意的是,当我试图从使用PLINQ和LINQ获得什么样的性能好处时,当禁用并行性时,同样的测试会在OutOfMemoryException上失败。
有什么合理的解释吗?我可以始终如一地复制。我没有检查,但我是否会耗尽内存而不是内存,而是一些资源,而这些资源根据线程模型被不同的分配?想法?
发布于 2011-11-10 05:26:34
.net中的单个对象限制在2GB以内,即使是64位对象也是如此.如果您不使用PLINQ,我会猜到某个对象(例如,一个列表)正在变大,超过2G,从而崩溃。使用PLINQ --因为它可以分解它的工作--我猜它会创建多个列表,所有的列表都在2GB以下。
请张贴一些代码,没有它是不可能提供任何细节。
https://stackoverflow.com/questions/8073625
复制相似问题