Доброе время, суток! Вопрос как работать с большими объемами памяти?
На пример мне нужно загнать в оперативную память — примерно 2 — 3 Гб (моих ресурсов хватает). Так что бы не возникала ошибка не хватки памяти.
Сейчас создаю объект TMemoryStream, и все равно возникает ошибка
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
09-12-2022 07:50 | Комментарий к предыдущим ответам
Могу ошибаться, но 32-битному процессу выделяется 4 гБ памяти. Не уверен, что в этом случае получиться выделить больше даже в 64-битной системе.
Поэтому для 2-3 Гб нужно боротся с фрагментацией, во время освобождать занятую память и тп.
Но есть более простой выход - отображаемые в память файлы. Имхо.
Тут такое интересное обсуждение наковырялось... оно старенькое, 2006 года, но кто знает, насколько актуальное http://www.delphigroups.info/2/a7/505442.html
В общем, вроде как нужно добавить флаг специальный IMAGE_FILE_LARGE_ADDRESS_AWARE для исполняемого файла.
PS: Если что, проверить сам не могу, у меня ни на одной машине нет более 4Гб памяти.
Если у Вас 64-х разрядная ОС и достаточный объем оперативной памяти, попробуйте выделить память из кучи:
AllocMem([1] * 1024 * 1024 * 1024);
где [1] - ваше количество гигабайт
Отследить выделение памяти можно через диспетчер задач. Если всё пройдет гладко, то работать с кучами возможно только через указатели
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.