System.OutOfMemoryException - C#

Узнай цену своей работы

Формулировка задачи:

Данная ошибка на строке:
var rr1 = abMatrix.MapIndexed((i, j, x) => aParcel[i] + bParcel[j] - 2 * x);
где
var abMatrix = aMatrix.TransposeAndMultiply(bMatrix);
в свою очередь
aMatrix, bMatrix
имеют размерность 10000 на 5. Функции
MapIndexed(), TransposeAndMultiply()
взяты из библиотеки Math.NET Numerics. Собственно как побороть ошибку OutOfMemoryException?

Решение задачи: «System.OutOfMemoryException»

textual
Листинг программы
var abMatrix = aMatrix.TransposeAndMultiply(bMatrix);
 
            aMatrix.MapInplace(x => x * x);
            bMatrix=bMatrix.Transpose();
            bMatrix.MapInplace(x => x * x);
 
            var aParcel = aMatrix.RowSums();
            var bParcel = bMatrix.ColumnSums();
 
            GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
            GC.Collect();
 
            var rr1 = abMatrix.MapIndexed((i, j, x) => aParcel[i] + bParcel[j] - 2 * x); // OutOfMemory
 
            var v = rr1.EnumerateRows().Sum(x => x.Min()) / abMatrix.RowCount;
            var v1 = rr1.EnumerateColumns().Sum(x => x.Min()) / abMatrix.ColumnCount;
 
            var resultTuple = new Tuple<double, double>(v, v1);
            return resultTuple;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5