Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Увеличить размер подкачки для проекта


Автор: jorka 27.9.2012, 18:01
Здравствуйте, моя программа работает с огромным массивом данных типа single, и в процессе работы всегда падает с сообщением Out of memory (при этом в диспетчере задач показывается, что программа достигла размера 1.77 Гб). Утечек нет, уменьшить массив тоже нельзя. Можно ли увеличить размер подкачки для проекта? Ведь на компе ещё куча оперативки есть.

ЗЫ Делфи 7.

Автор: Alexeis 27.9.2012, 18:09
  На Win32 больше 2х Гб на одно приложение не получиться . Нужна 64х битка винда. Проект 64х битный и соответственно версия XE и старше.

Автор: jorka 27.9.2012, 18:28
Цитата(Alexeis @ 27.9.2012,  18:09)
На Win32 больше 2х Гб на одно приложение не получиться . Нужна 64х битка винда. Проект 64х битный и соответственно версия XE и старше.

Винда как раз х64, а вот проект, я так понимаю, нет. Благодарю, буду ставить ХЕ ))

Автор: Illusion Dolphin 27.9.2012, 22:40
Цитата

  На Win32 больше 2х Гб на одно приложение не получиться .

Как бы не совсем так smile http://www.gunsmoker.ru/2011/04/windows-spin-off.html

P.S. А вообще конечно лучше x64

Автор: Alexeis 28.9.2012, 10:21
jorka, в большинстве задач не требуется грузить все данные в память. Это не рациональный подход. Если программа работает, к примеру, в текущий момент с кусками по 20-30 мб, то ровно на столько и нужно кэшировать массив из файла. Загрузка таких блоков производиться быстро на современных системах. Исключение составляют задачи, когда в произвольный момент времени могут использоваться данные из любого места 2х гигабайтного диапазона. Да и то, если известно в какой последовательности извлекаются данные, то можно большой массив отсортировать таким образом, чтобы данные которые используются в одно время лежали в последовательных или близких ячейках памяти. Такая структура позволит кэшировать данные блочно. 
  Еще как вариант эффективного доступа к большим объемам данных это базы данных. Там уже правильно реализованы механизмы кэширования. 

  В качестве примера могу привести ПО на мобильном телефоне. Мой старенький К800 имел всего 1 Мб памяти, зато легко обрабатывал изображения с камеры 3.2Мп, которые в несжатом виде занимают по 10Мб . Весь секрет в том, что жпег для сжатия использует блоки по 256 пикселей (16х16), соответственно для обработки нет необходимости все изображение помещать в оперативную память.

Добавлено через 5 минут и 38 секунд
Illusion Dolphin, любопытный флаг IMAGE_FILE_LARGE_ADDRESS_AWARE . Получается что на 64х битке он позволит 32х битной проге использовать до 4х Гб, пусть даже кусками.

Автор: DJPhoeniX 29.9.2012, 02:34
Советую посмотреть http://www.transl-gunsmoker.ru/2009/02/blog-post_11.html.

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