Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2009, 20:40   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Печаль Перебор с памятью

Добрый вечер! . Заканчиваю я работу со своей курсовой, но обнаружил тут проблему. Вообщем, у меня под мою программу выделяется слишком много памяти. Аж почти 90 (!) Mb. Сам exe-шник имеет размер ~ 2.00Mb. В чем причина такого выделения памяти? На что ее столько выделяется и как решить эту проблему?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.05.2009, 20:48   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Причин может быть несколько. Если программа использует много графических объектов то заполнение памяти будет достаточно большим. Если используются TBitMap`ы, то почаще используй .Free Попробуй уменьшить количество переменных (Особенно массивов) или в нескольких местах программы используй запись всех данных хотя бы в текстовик и очисть память от переменных.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.05.2009, 20:50   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от Alex Cones
Если используются TBitMap`ы, то почаще используй .Free
А где прописывать это .Free?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.05.2009, 20:52   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Значит так:
Pikcha:=TBitMap.Create;
Pikcha.LoadFromFile('путь');
Image1.Canvas.Draw(X,Y,Pikcha);
А после того, как она нам больше не нужна:
Pikcha.Free; - очистили память
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.05.2009, 21:05   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ааа...Но у меня-то картинки не загружаются во время работы программы. У меня битмапы есть тока на спидбутонах и имейджах.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.05.2009, 21:07   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Попробуй стереть изображения на форме и загружать их после запуска. Так уменьшится объем EXEи возможно (хотя неуверен) память. Но акцент все-таки сделай на уменьшении количества массивных переменных.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.05.2009, 21:14   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Я че т не могу понять, что это значит:
Цитата:
Сообщение от Alex Cones
Но акцент все-таки сделай на уменьшении количества массивных переменных.
Что это? Что значит "массивных переменных"? У мну и массивов может одна штучка.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 23.05.2009, 21:24   #8
-HunteR-
Форумчанин
 
Аватар для -HunteR-
 
Регистрация: 04.11.2007
Сообщений: 117
По умолчанию

artemavd
Ты скажи вообще, что программа делает, а то ответа просто можешь не получить.
Перед тем, как выложить код, я его всегда проверяю.
Если помог - тыкни на на весы слева, под аватарой.
-HunteR- вне форума Ответить с цитированием
Старый 23.05.2009, 21:25   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Посчитайте суммарный объем ваших битмапов.
Потом преобразуйте их в JPG и сравните суммарный объем в этом случае.
Вариант - используйте вместо битмапов JPG-ки.
В качестве потеряете чуть-чуть, зато в объеме выиграете значительно...
Заодно проверьте, не дублируется ли процесс загрузки картинок.
mihali4 вне форума Ответить с цитированием
Старый 23.05.2009, 21:35   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Хантер, программа делает обсчёт учебного процесса по показателям. Михалыч, не поверите, но максимальный объём всех битмапов не больше 150 кб. Это точно. У меня приличное количество раз повторяются битмапы на кнопках. P.S. Рад снова Вас, Михалыч, видеть на форуме после столь долгого отсутствия:-)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перебор файлов Ralf_ru Общие вопросы Delphi 11 31.03.2009 14:23
Управление памятью Raz0r Помощь студентам 4 02.03.2009 18:42
Управление памятью ilham Операционные системы общие вопросы 2 17.12.2008 18:29
Проблема с памятью в С++ rJIaBkoM Помощь студентам 1 14.06.2008 14:25
Работа с памятью Shurik Hacker Общие вопросы Delphi 7 22.06.2007 20:51