![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как принудительно уменьшить объем памяти, занимаемый программой? [D7, WinXP]
Думатель © (2008-01-29 06:49:00)День добрый.
Ситуация такая: в процессе работы программы объем занимаемой памяти (судя по task manager) растет медленно, но верно. Доходит до 500Мб через 4 часа и программа умирает.
Утечек памяти нет! Проверял 2 профилерами (memcheck и последняя EurekaLog). Все создаваемые объекты уничтожаются нормально.
Вот только в программе довольно часто происходят ASSIGN'ы графических объектов друг другу, думаю именно тут проблема.
Вопрос такой: есть ли методы принудительной очистки ресурсов приложения? Сборка мусора или что-то похожее...
Спасибо.
Семеныч (2008-01-29 10:20:00) [21]> Думатель (29.01.08 06:49)
> судя по task manager
Это еще не показатель утечек. Даже когда программа освобождает память, то менеджер памяти Delphi не спешит возвращать ее системе. А Task Manager показывает, сколько памяти отъедено именно у системы, поэтому его показания могут расти даже когда в программе действительно нет утечек.
> Проверял 2 профилерами (memcheck и последняя EurekaLog). Все
> создаваемые объекты уничтожаются нормально.
Тут еще важно КОГДА они уничтожаются. Если при завершении программы, то профайлер покажет, что все хорошо - а ситуация при этом может быть такая же, как у Вас. Проверьте уничтожается ли каждый объект СРАЗУ, как только он становится не нужен.
> Вот только в программе довольно часто происходят ASSIGN'ы графических
> объектов друг другу, думаю именно тут проблема.
А какая тут может быть проблема? Если объект - источник становится после assign уже не нужен, то его надо сразу же уничтожить, вот и все.
Riply (2008-01-29 09:51:00) [22]> [0] Думатель (29.01.08 06:49)
> Вопрос такой: есть ли методы принудительной очистки ресурсов приложения?
Надо искать и исправлять саму ошибку, а не героически бороться с ее последствиями.
Не IMHO.
miek (2008-01-29 09:23:00) [23]ищи утечки. не делай вид, что их нет.
а метод очистки простой - ExitProcess или TerminateProcess