Снова о размере, но теперь уже о памяти [Windows]

Вопросы программирования на Free Pascal, использования компилятора и утилит.

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

SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Снова о размере, но теперь уже о памяти [Windows]

Сообщение SovNarKom »

Пустое приложение на FPC (2.3.1, objfpc) весит 27кб, но при запуске жрёт порядка полутора мегабайт памяти. Т.е. получается что RTL эту памят автоматически резервирует. Зачем ей столько я пока не понял...

Ситуацию конечно можно немного исправить, вызвая
SetProcessWorkingSetSize(GetCurrentProcess,-1,-1)
но это всё "заплатки"...

Я вот думаю... можно ли из RTL выкинуть эти веши, не выкидывая objpas...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Так если речь о зарезервированной памяти, то там только под стек сразу мегабайт по умолчанию идет. А пустая RTL много жрать не должна - ей нужно порядка страницы (4КБайт) для инициализации менеджера памяти и пара сотен байт для обработки командной строки...
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

в принципе это фича винды - если хош поменьше - указывай руками
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

где указывать? -Ch? что-то пока без изменений... может из-за Лазаруса...
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

попробуй -Cs
точно сейчас не помню - по хорошему надо Рихтера поднять и почитать
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

alexs
Поставил минимум, по 1024 на кучу и стек... в результате порядка 1.2 Мб.

Странно. А в linux и других системах с этим кстати как?
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

честно говоряя - не знаю
да и не такая это проблема :-)
SovNarKom
постоялец
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]
Контактная информация:

Сообщение SovNarKom »

alexs
Да нет, это ещё какая проблема, если одновременно должно быть запущено 10 экземпляров программы, то емсть разница - будет это всё добро весить 1.5 мб или 15.

Кроме того, если программа запускаается автоматически с енебольшим промежутком времени, то разумнее было бы нанеё выделять те же 150кб, вместо 1.5.

И самое главное, если в опциях компилятора можно выбирать нужные размеры, то почему они не работают, это баг или фича Windows?
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

Тоже с таким столкнулся. Когда малюсенькая программа с 5-6 переменными и 30-50 строками кода жрет памяти больше 1Мб - это и правда проблема.

В общем как это исправить?)

Тупо добавил SetProcessWorkingSetSize(GetCurrentProcess,-1,-1)
Объем занимаемой памяти вырос с 1.2Мб до 3.2Мб.
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

при изменении стэк и хип сайз ничего не меняется

версия 2.0.4
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

SovNarKom писал(а):добро весить 1.5 мб или 15.

у Рихтера вычитал - что параметры стека винды определяет компоновщик (система по умолчанию для стека сразу резервирует 1 Мб)
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

и как обойти это значение "по умолчанию"?
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

я не знаю как у компоновщика из fpc с этим
он (Рихтер) советует через параметры компоновщика в C++
nagash
новенький
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05
Контактная информация:

Сообщение nagash »

Нет, вариант переписать все под спп меня не устраивает)
Может знает кто?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Учите матчасть. Чем отличается Reserved память от Commited, как считаются разделяемые библиотеки типа kernel32.dll... И смотрите не на цифру в TaskManager, a на то, насколько уменьшается доступная память системы при запуске приложения.
Если приложение с окошками, интересно понаблюдать за цифрой в TaskManager, например, при минимизации приложения.
Ответить