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

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

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

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

Сообщение SovNarKom » 22.08.2007 19:35:07

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

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

Я вот думаю... можно ли из RTL выкинуть эти веши, не выкидывая objpas...
SovNarKom
постоялец
 
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]

Сообщение Sergei I. Gorelkin » 22.08.2007 20:00:05

Так если речь о зарезервированной памяти, то там только под стек сразу мегабайт по умолчанию идет. А пустая RTL много жрать не должна - ей нужно порядка страницы (4КБайт) для инициализации менеджера памяти и пара сотен байт для обработки командной строки...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение alexs » 22.08.2007 21:10:01

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

Сообщение SovNarKom » 22.08.2007 21:33:38

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

Сообщение alexs » 23.08.2007 00:09:39

попробуй -Cs
точно сейчас не помню - по хорошему надо Рихтера поднять и почитать
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение SovNarKom » 23.08.2007 04:26:45

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

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

Сообщение alexs » 23.08.2007 08:18:19

честно говоряя - не знаю
да и не такая это проблема :-)
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение SovNarKom » 24.08.2007 21:28:38

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

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

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

Сообщение nagash » 02.10.2007 07:48:27

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

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

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

Сообщение nagash » 02.10.2007 08:24:10

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

версия 2.0.4
nagash
новенький
 
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05

Сообщение alexs » 02.10.2007 08:32:08

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

у Рихтера вычитал - что параметры стека винды определяет компоновщик (система по умолчанию для стека сразу резервирует 1 Мб)
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение nagash » 02.10.2007 10:41:24

и как обойти это значение "по умолчанию"?
nagash
новенький
 
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05

Сообщение alexs » 02.10.2007 13:02:23

я не знаю как у компоновщика из fpc с этим
он (Рихтер) советует через параметры компоновщика в C++
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение nagash » 03.10.2007 06:34:30

Нет, вариант переписать все под спп меня не устраивает)
Может знает кто?
nagash
новенький
 
Сообщения: 50
Зарегистрирован: 21.05.2007 08:27:05

Сообщение Sergei I. Gorelkin » 03.10.2007 15:03:37

Учите матчасть. Чем отличается Reserved память от Commited, как считаются разделяемые библиотеки типа kernel32.dll... И смотрите не на цифру в TaskManager, a на то, насколько уменьшается доступная память системы при запуске приложения.
Если приложение с окошками, интересно понаблюдать за цифрой в TaskManager, например, при минимизации приложения.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1407
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

След.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru