Вопрос про память

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
AlexPavel
новенький
Сообщения: 12
Зарегистрирован: 28.12.2009 19:31:43

Вопрос про память

Сообщение AlexPavel »

Как в Lazarus можно увеличить объем доступной виртуальной памяти более 1.7 Гб для Win32? Выделяю необходимую память для массива с помощью getmem. Оперативка -3Гб. Можно ли с помощью LARGEADDRESSAWARE увеличить доступный объем памяти, если да, то как это сделать?

Добавлено спустя 1 час 42 минуты 18 секунд:
Даже при попытке выделить около 1.55 Гб вылетает ошибка!
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Это ограничение системы... Обходится ключами /PAE и /3GB в файле boot.ini
P.S. а вообще стоит пересмотреть алгоритм работы программы
AlexPavel
новенький
Сообщения: 12
Зарегистрирован: 28.12.2009 19:31:43

Сообщение AlexPavel »

Я хотел сделать так: если объем массива больше свободной оперативной памяти (или виртуальной), то он разбивается на части и каждая часть по-очередно обрабатывается и записывается на жесткий диск. При этом получается, что при свободной оперативке около 2 Гб я не могу обрабатывать 1.55 Гб, а хотелось бы максимально задействовать ресурсы компа, потому как при записи массива уже тратится больше времени. А при помощи LARGEADDRESSAWARE нельзя увеличить это ограничение?
А использование ключей /PAE и /3GB в файле boot.ini возможно только в Win XP, а то его в Win 7 нет?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

если мне не изменяет память, то на процесс 32-х битная система может выделить не более 1,5 гигов оперативной памяти... В данном случае можно попробовать работать либо блоками, либо использовать файл подкачки
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

Сообщение Kitayets »

переходите на 64битную архитектуру :)

вот познавательные ссылки по моделям памяти в виндовс и ограничениям:
http://www.gunsmoker.ru/2011/04/windows.html,
http://www.gunsmoker.ru/2011/04/windows-spin-off.html,
http://www.gunsmoker.ru/2011/06/blog-post.html.
AlexPavel
новенький
Сообщения: 12
Зарегистрирован: 28.12.2009 19:31:43

Сообщение AlexPavel »

Padre_Mortius, Kitayets спасибо за ответы. 8)
При переходе на 64 битную винду желательно, чтобы памяти было более 4 Гб или можно и с меньшей памятью?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

С меньшей памятью будет не очень комфортно, потому как винда не полностью 64-х битная
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

Сообщение Kitayets »

Padre_Mortius писал(а):С меньшей памятью будет не очень комфортно, потому как винда не полностью 64-х битная


Как это не полностью?
это вни95 была кашей 16/32. а теперь microsoft отказалась от такого подхода (когда 32 битный код мог вызывать 16 битные функции). теперь просто слой совместимости SysWoW64, по сути - 32 битная копия системных библиотек, т.е. 32битные приложения работают в 32бином окружении а 64битный в 64битном. Всё также как на GNU/linux например. там тоже есть /lib и /lib64.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Могу привести сразу два примера.. Win7 x86_64 и WinXP x86_64... берем абсолютно голую свежепоставленную систему... запускаем диспетчер задач и видим кучу запущенных 32-х битных приложений... Ядро 64-х битное, но обвязка системы наполовину 32-х битная, в отличие от линукса...
В линуксе если не нужны 32 бита на 64-х битной системе, то эти пакеты можно и не ставить, а вот под виндой такого не получится..
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

Сообщение Kitayets »

2Padre_Mortius

вот прямо сейчас смотрю в диспетчер задач на w7 x86_64 и 32-битные только пользовательские приложение, все системные - 64...
kipar
новенький
Сообщения: 78
Зарегистрирован: 04.03.2010 11:15:54

Сообщение kipar »

Надо нажать "Отображать процессы всех пользователей". И там, действительно, несколько процессов *32.
Ответить