Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Экономия памяти 
:(
    Опции темы
ASGDeveloper
Дата 28.3.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: 1
Всего: 1



Есть ли готовые методы для уменьшения размера памяти занимаемой программой (в оперативе есно)? smile
PM MAIL   Вверх
aktuba
Дата 28.3.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Есть. Хранить меньше данных в оперативе...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Guedda
Дата 28.3.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Используй WinApi, пользуйся меньшим количеством констант и переменных.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Yanis
Дата 28.3.2007, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(ASGDeveloper @  28.3.2007,  15:32 Найти цитируемый пост)
Есть ли готовые методы для уменьшения размера памяти занимаемой программой (в оперативе есно)?

Писать маленькие программы. Отказаться от удобств VCL.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
ASGDeveloper
Дата 28.3.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: 1
Всего: 1





Добавлено через 1 минуту и 11 секунд
Цитата(aktuba @  28.3.2007,  14:33 Найти цитируемый пост)
Есть. Хранить меньше данных в оперативе...

В том-то и дело, что вроде почти не храню. И форм то нет.

Чтобы не быть голословным добавлю следующее. Есть некий проект который тащит вместе с собой кучу модулей (units, example: Windows, SysUtils, DrvMgr, etc). На базе этого проекта (точнее прямо в этом проекте) имеем вторую программу, которая вообще никаких форм не создает, и когда в этой части немного.
PM MAIL   Вверх
Alexeis
Дата 28.3.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



ASGDeveloper, память в винде штука хитрая, с одной стороны она занята, а с другой нет.
  Одно ядро винды грузит примерно 2,5Мб в ОЗУ, от него ведь не избавишся, но на самом деле ядро не грузиться в оперативу, для каждой программы, а лишь отображается в ее адресное просторанство. Кроме того и винда сама по себе не грузит весь экзешник в ОЗУ, но отображает туда дисковый образ программы, чем большая ее часть используется в данный момент тем больше она занимает. Дальше, память резервирумая стандартным менеджером кучи тоже запрашивется не экономно. При загрузке проги столько всяких "системных штук" ее выделяют берут с запасом + всякие выравнивания секций программы. 
  Кстати специально для этого библиотека KOL выполнена с минимальным количеством модулей. Неэкономно расходуют память объекты с виртуальными методам. Компилятор не удаляет из кода программы неиспользуемые виртуальные методы, и соотвественно это все занимает память. 
  Если прога в памяти занимает около 3х Мб, то пытаться выкручиваться бесполезно, тут мало что зависит от прикладного программиста. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Sunvas
Дата 28.3.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(ASGDeveloper @  28.3.2007,  14:48 Найти цитируемый пост)
Чтобы не быть голословным добавлю следующее. Есть некий проект который тащит вместе с собой кучу модулей (units, example: Windows, SysUtils, DrvMgr, etc). На базе этого проекта (точнее прямо в этом проекте) имеем вторую программу, которая вообще никаких форм не создает, и когда в этой части немного.

Без кода трудно что-то сказать. Ведь в память мозжно всякую чушь загружать и без форм.

ASGDeveloper, а почему тебе так необходимо мало места в оперативе? Неужели у тебя программа съедает более 10 мб, что ты так беспокоишься?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Beltar
Дата 29.3.2007, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



Такой вопрос, программа после загрузки занимает ~3 метра по показаниям Task Manager'а. Главная форма не отображается, только иконка в трее. Разворачиваем из трея и снова сворачиваем, видим, что выделение упало до ~600 Кб. Почему так и стоит ли по этому поводу беспокоится?

Цитата

 Кстати специально для этого библиотека KOL выполнена с минимальным количеством модулей.


А как вообще то, что перечислено в uses влияет на размер проги? Легко убедиться, что компилятор убирает не используемые методы и из подключенных уже откомпилированных юнитов, берет только нужное. Так вроде и в Turbo Pascal было. Я так понимаю, KOL тащит с собой меньше API-фу-ций, но за все надо платить, и у KOL есть ряд ограничений.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
ASGDeveloper
Дата 29.3.2007, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


developer
**


Профиль
Группа: Участник
Сообщений: 389
Регистрация: 1.4.2006

Репутация: 1
Всего: 1



Цитата(Sunvas @  28.3.2007,  19:09 Найти цитируемый пост)
Неужели у тебя программа съедает более 10 мб, что ты так беспокоишься?

Угу, больше. Приближается к 20 метрам :(


Цитата(Beltar @  29.3.2007,  07:54 Найти цитируемый пост)
Разворачиваем из трея и снова сворачиваем, видим, что выделение упало до ~600 Кб. Почему так и стоит ли по этому поводу беспокоится?

Как часто юзера выполняют подобные действия?

Кстати, заметил странную вещь, если вызывать метод Application.Minimize, то размер занимаемой памяти не уменьшается, а если нажать кнопку "Минимизировать" (которая в заголовке почти каждой формы есть smile ), то размер занимаемой памяти уменьшается.
PM MAIL   Вверх
Alexeis
Дата 29.3.2007, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(Beltar @  29.3.2007,  07:54 Найти цитируемый пост)
Такой вопрос, программа после загрузки занимает ~3 метра по показаниям Task Manager'а. Главная форма не отображается, только иконка в трее. Разворачиваем из трея и снова сворачиваем, видим, что выделение упало до ~600 Кб. Почему так и стоит ли по этому поводу беспокоится?

  Программа после сворачивания определяется виндой как малоактивная и большая ее часть сбрасывается вв своп.
  
Цитата(Beltar @  29.3.2007,  07:54 Найти цитируемый пост)
А как вообще то, что перечислено в uses влияет на размер проги? Легко убедиться, что компилятор убирает не используемые методы и из подключенных уже откомпилированных юнитов, берет только нужное. Так вроде и в Turbo Pascal было. Я так понимаю, KOL тащит с собой меньше API-фу-ций, но за все надо платить, и у KOL есть ряд ограничений. 

      Каждый новый модуль это своя секция, которая размещается в памяти и в экзешнике с выравниванием, т.е. за ней пустой баласт. Кроме того если в модуле объявлены глобальные переменные, такие как в модуле Forms Application, Screen, Mouse и т.д. то и сами они попадают в экзешник. Неиспользуемые процедуры не попадают в код.
  На счет ограничений кол. Это только запрет на использование визуальных VCL и отсутствие виртуальных методов у KOL компонентов. Сама KOL не ограничивает программиста, а тем более что касается API функций, ведь к ней подключен модуль windows. Есть модуль работы с исключениями и COM и т.д. Все средства, просто иногда тот же функционал реализован несколько по другому, причем часто даже лучше чем в VCL.

Добавлено через 2 минуты и 25 секунд
Цитата(ASGDeveloper @  29.3.2007,  09:16 Найти цитируемый пост)
Кстати, заметил странную вещь, если вызывать метод Application.Minimize, то размер занимаемой памяти не уменьшается, а если нажать кнопку "Минимизировать" (которая в заголовке почти каждой формы есть smile ), то размер занимаемой памяти уменьшается. 

  Да такой эффект легко делается и програмно (есть API функция), только толку от него мало, ведь винда сама лучше знает кого нужно больше держать в оперативе, а кого свопить.

Добавлено через 5 минут и 21 секунду
Цитата(ASGDeveloper @  29.3.2007,  09:16 Найти цитируемый пост)
Угу, больше. Приближается к 20 метрам :(

  Нужно искать какие тяжеловесные компоненты используется и заменить их на легковесные аналоги, стоит проверить также не не "забиваешь ли микроскопом гвозди" в программе.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Rennigth
Дата 29.3.2007, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



В догонку(звиняюсь что ссыла на другой форум, просто вопрос слишком часто поднимается, а Smike там тоже неплохо обрисовал картину):
http://forum.sysman.ru/index.php?showtopic=9895


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.5125 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.