![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
Есть ли готовые методы для уменьшения размера памяти занимаемой программой (в оперативе есно)?
|
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 16 Всего: 38 |
Есть. Хранить меньше данных в оперативе...
-------------------- ![]() |
|||
|
||||
| Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: 14 Всего: 78 |
Используй WinApi, пользуйся меньшим количеством констант и переменных.
-------------------- Ll 2 |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
| ASGDeveloper |
|
|||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
Добавлено через 1 минуту и 11 секунд В том-то и дело, что вроде почти не храню. И форм то нет. Чтобы не быть голословным добавлю следующее. Есть некий проект который тащит вместе с собой кучу модулей (units, example: Windows, SysUtils, DrvMgr, etc). На базе этого проекта (точнее прямо в этом проекте) имеем вторую программу, которая вообще никаких форм не создает, и когда в этой части немного. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
ASGDeveloper, память в винде штука хитрая, с одной стороны она занята, а с другой нет.
Одно ядро винды грузит примерно 2,5Мб в ОЗУ, от него ведь не избавишся, но на самом деле ядро не грузиться в оперативу, для каждой программы, а лишь отображается в ее адресное просторанство. Кроме того и винда сама по себе не грузит весь экзешник в ОЗУ, но отображает туда дисковый образ программы, чем большая ее часть используется в данный момент тем больше она занимает. Дальше, память резервирумая стандартным менеджером кучи тоже запрашивется не экономно. При загрузке проги столько всяких "системных штук" ее выделяют берут с запасом + всякие выравнивания секций программы. Кстати специально для этого библиотека KOL выполнена с минимальным количеством модулей. Неэкономно расходуют память объекты с виртуальными методам. Компилятор не удаляет из кода программы неиспользуемые виртуальные методы, и соотвественно это все занимает память. Если прога в памяти занимает около 3х Мб, то пытаться выкручиваться бесполезно, тут мало что зависит от прикладного программиста. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Без кода трудно что-то сказать. Ведь в память мозжно всякую чушь загружать и без форм. ASGDeveloper, а почему тебе так необходимо мало места в оперативе? Неужели у тебя программа съедает более 10 мб, что ты так беспокоишься? -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
Такой вопрос, программа после загрузки занимает ~3 метра по показаниям Task Manager'а. Главная форма не отображается, только иконка в трее. Разворачиваем из трея и снова сворачиваем, видим, что выделение упало до ~600 Кб. Почему так и стоит ли по этому поводу беспокоится?
А как вообще то, что перечислено в uses влияет на размер проги? Легко убедиться, что компилятор убирает не используемые методы и из подключенных уже откомпилированных юнитов, берет только нужное. Так вроде и в Turbo Pascal было. Я так понимаю, KOL тащит с собой меньше API-фу-ций, но за все надо платить, и у KOL есть ряд ограничений. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| ASGDeveloper |
|
||||
|
developer ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 1.4.2006 Репутация: 1 Всего: 1 |
Угу, больше. Приближается к 20 метрам :(
Как часто юзера выполняют подобные действия? Кстати, заметил странную вещь, если вызывать метод Application.Minimize, то размер занимаемой памяти не уменьшается, а если нажать кнопку "Минимизировать" (которая в заголовке почти каждой формы есть |
||||
|
|||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Программа после сворачивания определяется виндой как малоактивная и большая ее часть сбрасывается вв своп. Каждый новый модуль это своя секция, которая размещается в памяти и в экзешнике с выравниванием, т.е. за ней пустой баласт. Кроме того если в модуле объявлены глобальные переменные, такие как в модуле Forms Application, Screen, Mouse и т.д. то и сами они попадают в экзешник. Неиспользуемые процедуры не попадают в код. На счет ограничений кол. Это только запрет на использование визуальных VCL и отсутствие виртуальных методов у KOL компонентов. Сама KOL не ограничивает программиста, а тем более что касается API функций, ведь к ней подключен модуль windows. Есть модуль работы с исключениями и COM и т.д. Все средства, просто иногда тот же функционал реализован несколько по другому, причем часто даже лучше чем в VCL. Добавлено через 2 минуты и 25 секунд Да такой эффект легко делается и програмно (есть API функция), только толку от него мало, ведь винда сама лучше знает кого нужно больше держать в оперативе, а кого свопить. Добавлено через 5 минут и 21 секунду Нужно искать какие тяжеловесные компоненты используется и заменить их на легковесные аналоги, стоит проверить также не не "забиваешь ли микроскопом гвозди" в программе. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
В догонку(звиняюсь что ссыла на другой форум, просто вопрос слишком часто поднимается, а Smike там тоже неплохо обрисовал картину):
http://forum.sysman.ru/index.php?showtopic=9895 -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |