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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2009, 19:25   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Максимальный размер занимаемой памяти

Программа в "процессах" занимает порядка 11 МБ.Насколько я помню, в Дельфи нельзя превышать 64 МБ. Все изображения в программе нарисованы через канву и переменные типа ТBitMap. В приложении несколько разделов, поэтому можно освобождать некоторые изображения из памяти, при переходе в другой раздел. А теперь вопрос (ы): NGBUTG.Free освободит память занимаемую изображением? Если я превышу память (64), программа вылетит или будет продолжать нормально функционировать? Если вылетит, то как "обойти" это препятствие?
Изображения
Тип файла: png NGNAMENB.PNG (36.7 Кб, 138 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 06.05.2009, 19:32   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
Если я превышу память (64), программа вылетит или будет продолжать нормально функционировать?
Будет продолжать нормально функционировать. Про ограничения что-то не слыхал ...
Ведь все что делает твоя программа управляется системой.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 06.05.2009, 19:34   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

То бишь забить на старые повадки (при работе с TPX) и загружать память на полную?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 06.05.2009, 19:38   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

По крайней мере попробуй !!!
Что мешает то ?
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 06.05.2009, 19:49   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Хммм...

Довольно-таки интересно получилось:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 A:=TBitMap.Create;
 A.LoadFromFile('A.bmp');
 Image1.Canvas.Draw(0,0,A);
end;
И поставил картинку на 32 МБ. Открыл Дисп. посмотрел на память. После частого нажатия на кнопку к исходному значению прибавлялось 32 МБ (На 64 слава богу не вылетел)) Но при достижении 128 МБ объем памяти снова снижался до 34МБ (как при запуске до нажатия). Довольно таки интересное св-во памяти.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 06.05.2009, 19:59   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Ну тут я не помощник ... Поведение системы в этом случае взаимодействия с твоей программой я не знаю.
Хотя из твоего кода видно, что ты не высвобождаешь переменную А и каждая последующая картинка грузится в нее же, а потом передается в Image1, может поэтому память и не растет ...
Попробуй:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 A:=TBitMap.Create;
 A.LoadFromFile('A.bmp');
 Image1.Canvas.Draw(0,0,A);
 A.Free; // очищаем ...
end;
Посмотри что получится ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 06.05.2009, 20:33   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Получилось! Оно живое! Живое! XDD
Теперь память держится на уровне 3-4 МБ, только при загрузке картинки кратковременно подскакивает до 33. Спасибо. На всякий случай буду очищать память при переходе между разделами.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 06.05.2009, 20:59   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ограничение поидее есть но оно зависит от разрядности винды и используемых классов(в стринг больше 2ГБ не запхнешь)
и тд...но если есть возможность экономить ремурсы то почему бы и нет?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.05.2009, 22:37   #9
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию

Цитата:
но если есть возможность экономить ремурсы то почему бы и нет?
Согласен,оптимизация лишней не бывает.
Главное чтобы лишней оптимизации не было
Один из основных принципов Xtreme Programming-а
nusik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Освобождение памяти занимаемой объектом Oburec Общие вопросы Delphi 10 16.04.2009 10:54
Размер доступной оперативной памяти xakzona Win Api 1 27.02.2009 12:25
как увеличить максимальный размер структурных типов? bullvinkle Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2008 09:54
максимальный размер массива в 32-битной оси Adamant Свободное общение 5 03.12.2008 21:14
Размер Image изменяется на размер картинки, а сама она рисуется на области первой картинки RPGer Мультимедиа в Delphi 6 20.10.2008 19:54