Ест слишком много оперативной памяти

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

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

Сообщение Trezub » 19.03.2006 01:27:17

Было замечено, что проекты едят много памяти. Думал, дело в кривом коде. Скомпилировал одну форму - запускаю, смотрю в диспетчере задач (встроенный в ХР) - 9 Мб.

Это исправимо?

Как отслеживать правильное использование памяти? Потому что, казалось бы на нышешних машинах и обьемах памяти это не существенно, а на самом деле весьма критично, потому что за день работы сьедает столько памяти, что оси перестает хватать.

Вопрос собственно - уменьшение обьема поедаемой памяти.
Ось - windows 9x, windows XP, windows 2k.
Lazarus - 0.9.12
Trezub
новенький
 
Сообщения: 52
Зарегистрирован: 17.09.2005 21:23:04

Сообщение STAKANOV » 19.03.2006 01:35:42

Попробуй размер кучи уменьшить.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение Trezub » 19.03.2006 22:17:20

STAKANOV писал(а): Попробуй размер кучи уменьшить.

Знал бы я еще что такое "куча" и как это уменьшить её размер :)

Сейчас поковырялся в настройках, нашел - "параметры компилятора для проекта" "размер кучи -ch", по умолчанию 0.

Сразу поставил 1. Попытался скомпилировать - выругало.

Полез в Wiki, прочитал, что размер кучи должен варьироваться от 1024 до 67107840. Поставил 1024, скомпилировал, затаив дыхание запустил, посмотрел пожираемую память - все те же 9 Мб :(

Решил поставить 1048576, для выяснения, как это отразиться на размере поглощаемой памяти. Выставил, скомпилировал, запускаю - те же 9 Мб.

Читаю Wiki дальше, прочитал про некий HeapTrc, вроде подходит. Вставляю в код, ставлю -gh, компилирую. Запускаю - интересно, но не понятно :)

Как итог - чтение Wiki ни к чему не привело, кучу уменьшил на минимум, размер используемой памяти не изменился. Возможно не там уменьшил размер кучи?
Trezub
новенький
 
Сообщения: 52
Зарегистрирован: 17.09.2005 21:23:04

Сообщение STAKANOV » 20.03.2006 11:21:53

Нет, это я был не прав <_<

Боюсь, что для Lazarus уменьшить не удасться. Если критичен именно размер, то в Windows лучше использовать WinAPI. У меня программа так тот же объем занимает... правда при этом держит в памяти англо-русский словарь на более чем 46000 словарных статей (это он на самом деле память занимает).

Если нужна кроссплатформенность или просто хочется компонеты на форму кидать, то рекомендую MSEide+MSEgui - оно менее требовательно к ресурсам, думаю раза в 3.
Аватара пользователя
STAKANOV
энтузиаст
 
Сообщения: 1069
Зарегистрирован: 14.05.2006 21:26:24
Откуда: Зеленоград

Сообщение userok » 20.03.2006 15:27:25

STAKANOV писал(а):Если критичен именно размер, то в Windows лучше использовать WinAPI.

Возня с API на GUI-уровне - извращение, имхо. Чтобы далее не маяться, очень рекомендую PowerBasic & PowerBasicForms.
userok
 

Сообщение userok » 20.03.2006 15:34:36

STAKANOV писал(а):Боюсь, что для Lazarus уменьшить не удасться. Если критичен
...
Если нужна кроссплатформенность или просто хочется компонеты на форму кидать, то рекомендую MSEide+MSEgui - оно менее требовательно к ресурсам, думаю раза в 3.

Даже удивительно, что Lazarus дает такие громадные проекты и по размеру, и по памяти - и это используя внешние ( !!! ) GUI-тулкиты. Наверное, из-за реимплеметации Win32-api под все платформы и широко-профильности компонентов ( из-за чего смартлинк не очень эффективен ). Интересно тогда, почему бы не использовать вызовы к WINE (типа галочки "Wine" рядом с Qt, GtkX,... ) ?
userok
 

Сообщение Илья Аввакумов » 20.03.2006 15:37:08

userok писал(а):очень рекомендую PowerBasic & PowerBasicForms.

Это имеет какоето отношение к Basic?
Илья Аввакумов
новенький
 
Сообщения: 50
Зарегистрирован: 04.05.2005 15:06:42
Откуда: Екатеринбург

Сообщение noch » 20.03.2006 16:59:42

От 98 нужно шарахаться как от прокаженного
Мне нечего сказать, кроме как посоветовать перейти хотя бы на NT 4.0 у 98-го серьезные проблемы с управлением памяти, под него самый лучший код стабильно работать не будет.
Аватара пользователя
noch
постоялец
 
Сообщения: 145
Зарегистрирован: 07.06.2005 09:45:49
Откуда: Armenia

Сообщение Trezub » 21.03.2006 01:25:42

noch писал(а): у 98-го серьезные проблемы с управлением памяти, под него самый лучший код стабильно работать не будет.

Дело в том, что 9 мб - у простой формы - это под ХР.

Боюсь, что для Lazarus уменьшить не удасться. Если критичен именно размер, то в Windows лучше использовать WinAPI


Если нужна кроссплатформенность или просто хочется компонеты на форму кидать, то рекомендую MSEide+MSEgui - оно менее требовательно к ресурсам, думаю раза в 3.


То есть практически переписать код? Если выбор стоит между переписать и оставить нагрузку на ОЗУ, то я оставлю нагрузку. На данный момент переписывать для меня неприемлимо :(
Trezub
новенький
 
Сообщения: 52
Зарегистрирован: 17.09.2005 21:23:04

Сообщение Guest » 21.03.2006 13:12:05

А ты strip'oм пользовался?
Вроде немного помогает...
Guest
 

Сообщение badaninslava » 21.03.2006 13:13:41

Это был я. Забыл залогинится.
badaninslava
постоялец
 
Сообщения: 101
Зарегистрирован: 12.12.2005 01:21:44

Сообщение cranium » 21.03.2006 17:43:07

Было замечено, что проекты едят много памяти. Думал, дело в кривом коде. Скомпилировал одну форму - запускаю, смотрю в диспетчере задач (встроенный в ХР) - 9 Мб.


А я провел маленький эксперемент, проект состоящий из только из пустой формы 9 метров. Проект то же из одной формы с десятком контролов на ней и два потока которые эти контролы заполняют (стройется маршрут до задонного узла, использую синапс), всего 5.5 метра, пробовал под XP и 2003 сервером. Хм странно как то...
cranium
постоялец
 
Сообщения: 143
Зарегистрирован: 08.05.2005 03:59:45
Откуда: Санкт-Петербург

Сообщение Janus » 21.03.2006 19:36:24

А у меня пустая форма 7 мегов жрет.
Janus
постоялец
 
Сообщения: 134
Зарегистрирован: 07.11.2005 17:06:49

Сообщение IUnknown » 21.03.2006 20:14:23

А вы попробуйте использовать функцию SetProcessWorkingSetSize чтобы регулировать потребляемую память. Рабочее множество выделяется системой с "запасом" и не факт, что все оно понадобится
IUnknown
новенький
 
Сообщения: 73
Зарегистрирован: 10.03.2006 14:25:02
Откуда: Донецк

Сообщение userok » 22.03.2006 08:13:30

Илья Аввакумов писал(а):
userok писал(а):очень рекомендую PowerBasic & PowerBasicForms.

Это имеет какоето отношение к Basic?

Синтаксис - от Бэйсика (не Visual, а стандартный Basic ). Но со множеством GUI-расширений, поддержкой динамических массивов, создание DLL, доступ и создание COM-объектов, IDE для рисования форм, сетевой библиотекой, поддержкой баз данных, связи через последовательный порт... API вызывает прямо из кода. Генерирует сразу практически Ассемблерный код - меньше просто некуда. Планируется версия под Линукс.
userok
 

След.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 54

Рейтинг@Mail.ru