6

DotNet 4.5 にアップグレードした後、クエリで OutOfMemoryExceptions が発生し始めました。

(蒸留された)クエリは次のとおりです。

var tests = new int[]{}
    .AsParallel()
    .GroupBy(_ => _)
    .Take(int.MaxValue)
    .ToArray();

私は同じ問題を抱えている人のためにこれを投稿しています。以下、お答えします。

4

1 に答える 1

7

フレームワークの変更のようです。

Take() 演算子は、TakeOrSkipQueryOperator 内部クラスに実装されています。コードには、FixedMapHeap インスタンスを作成する WrapHelper() 関数を通過する分岐が 1 つあります。この関数は、最初に Take() に渡されたサイズの Key 要素の配列を作成します (この例では 8Gb の配列になります)。 )。

于 2012-08-16T20:54:39.723 に答える