Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Переполнение памяти (OutOfMemory) С#


Автор: Nikosss 22.3.2014, 14:29
Здравствуйте!

Возникла проблема при работе с большими массивами типа double. В каждом из 3 массивов хранится по 18 миллионов значений(матрица 300000х60) типа double. При выводе содержимого в компоненты dataGridView выскакивает exception OutOfMemory. Подскажите, пожалуйста, как решить эту проблему. 

С уважением,
Николай

Автор: Экскалупатор 22.3.2014, 16:55
Я не думаю, что нужны все данные сразу, а значит решение:
не выводить все сразу. надо выводить столько, сколько нужно для работы. все остальное пусть остается где то отдельно. Если возникнет необходимость то подгрузить новую пачку данных, освободив место путем удаления уже не нужных данных.

всякие сортировки проводить не в гриде(думаю, что это одна из причин, по которой данные грузятся все и сразу), а при выборке, и выбирать столько сколько нужно для отображения

Автор: jonie 22.3.2014, 21:17
Экскалупатор намекает на работу в виртуальном режиме таблицы, что, конечно, должно поддерживаться хранилищем.

Автор: Экскалупатор 23.3.2014, 02:07
Цитата(jonie @  22.3.2014,  20:17 Найти цитируемый пост)
Экскалупатор намекает на работу в виртуальном режиме таблицы, что, конечно, должно поддерживаться хранилищем. 

ну в общем можно и так сказать, но я вообще имел ввиду общий подход, а реализацию можно уже варьировать в зависимости от конкретных условий и задач.

зы
вообще, 18кк double ~ 140mb, вроде как не очень страшное количество, если с ним правильно работать конечно. вполне может оказаться, что просто в коде есть косяк, связанный с неправильной работой с массивами или что то около того, но я в любом случае не думаю что надо все эти данные загружать...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)