Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
ВнизКак принудительно уменьшить объем памяти, занимаемый программой? Найти похожие ветки
← →
Думатель (2008-01-29 06:49) [0]День добрый.
Ситуация такая: в процессе работы программы объем занимаемой памяти (судя по task manager) растет медленно, но верно. Доходит до 500Мб через 4 часа и программа умирает.
Утечек памяти нет! Проверял 2 профилерами (memcheck и последняя EurekaLog). Все создаваемые объекты уничтожаются нормально.
Вот только в программе довольно часто происходят ASSIGN"ы графических объектов друг другу, думаю именно тут проблема.
Вопрос такой: есть ли методы принудительной очистки ресурсов приложения? Сборка мусора или что-то похожее...
Спасибо.
← →
miek (2008-01-29 09:23) [1]ищи утечки. не делай вид, что их нет.
а метод очистки простой - ExitProcess или TerminateProcess
← →
Riply © (2008-01-29 09:51) [2]> [0] Думатель (29.01.08 06:49)
> Вопрос такой: есть ли методы принудительной очистки ресурсов приложения?
Надо искать и исправлять саму ошибку, а не героически бороться с ее последствиями.
Не IMHO.
← →
Семеныч (2008-01-29 10:20) [3]> Думатель (29.01.08 06:49)
> судя по task manager
Это еще не показатель утечек. Даже когда программа освобождает память, то менеджер памяти Delphi не спешит возвращать ее системе. А Task Manager показывает, сколько памяти отъедено именно у системы, поэтому его показания могут расти даже когда в программе действительно нет утечек.
> Проверял 2 профилерами (memcheck и последняя EurekaLog). Все
> создаваемые объекты уничтожаются нормально.
Тут еще важно КОГДА они уничтожаются. Если при завершении программы, то профайлер покажет, что все хорошо - а ситуация при этом может быть такая же, как у Вас. Проверьте уничтожается ли каждый объект СРАЗУ, как только он становится не нужен.
> Вот только в программе довольно часто происходят ASSIGN"ы графических
> объектов друг другу, думаю именно тут проблема.
А какая тут может быть проблема? Если объект - источник становится после assign уже не нужен, то его надо сразу же уничтожить, вот и все.
← →
Думатель (2008-01-29 10:32) [4]Спасибо за ответы. Буду думать и искать дальше :)
← →
Anatoly Podgoretsky © (2008-01-29 10:35) [5]> Думатель (29.01.2008 06:49:00) [0]
Какой именно памяти?
← →
Думатель (2008-01-29 10:40) [6]
> Какой именно памяти?
Глядя на task manager - просто "ПАМЯТЬ" И "ВИРТУАЛЬНАЯ ПАМЯТЬ"
Растут оба параметра. Примерно 50 на 50
← →
homm © (2008-01-29 10:46) [7]> [5] Anatoly Podgoretsky © (29.01.08 10:35)
> Какой именно памяти?
Надо пологать, оперативной.
← →
Anatoly Podgoretsky © (2008-01-29 10:51) [8]Так какой, из двух, ты именно ты хочешь уменьшить?
← →
Думатель (2008-01-29 11:53) [9]
> Anatoly Podgoretsky © (29.01.08 10:51) [8]
> Так какой, из двух, ты именно ты хочешь уменьшить?
Да хотя бы любой :(
В идеале - оба.
Мне бы только направление поиска задать - я найду решение... надеюсь...
← →
homm © (2008-01-29 11:54) [10]> [9] Думатель (29.01.08 11:53)
> Мне бы только направление поиска задать
Ищи утечки. Уже задали.
← →
Anatoly Podgoretsky © (2008-01-29 12:26) [11]В АПИ есть функция управления рабочим пространством, имя не помню, чтото похожее на setworkingspace
← →
homm © (2008-01-29 12:28) [12]> [11] Anatoly Podgoretsky © (29.01.08 12:26)
Блин, ну у человека явно память течет, вы предлагаете ему сделать так, что бы таскман на это закрыл глаза и жить дальше. Это же не Ваш метод.
← →
Думатель (2008-01-29 12:46) [13]
> Ищи утечки. Уже задали.
Да нету утечек! Я что, среди 10 создаваемых объектов не могу отследить корректное их удаление?
← →
Palladin © (2008-01-29 12:57) [14]
> Да нету утечек!
Я верю - из тебя получится отличный писать-фантаст.
← →
Riply © (2008-01-29 12:58) [15]> [13] Думатель (29.01.08 12:46)
> Да нету утечек! Я что, среди 10 создаваемых объектов не могу отследить корректное их удаление?
Чудес не бывает :)
← →
homm © (2008-01-29 13:11) [16]> [13] Думатель (29.01.08 12:46)
Ты случайно не с CLX под дельфи 6 пишеш? :)
← →
Kolan © (2008-01-29 13:14) [17]Утечек, которые показывают профайлеры может и нет. Может ты перед закрытием все освобождаешь.
Но в процессе работы, ты ненужное не мочишь… Ищи где такие места могут быть.
← →
Игорь Шевченко © (2008-01-29 13:29) [18]
> Ситуация такая: в процессе работы программы объем занимаемой
> памяти (судя по task manager) растет медленно, но верно.
> Доходит до 500Мб через 4 часа и программа умирает.
Ищи утечку. Она есть.
← →
ANB © (2008-01-29 13:34) [19]
> Да нету утечек! Я что, среди 10 создаваемых объектов не
> могу отследить корректное их удаление?
Я раз для красивости прикрутил девэкспрессовский прогресс бар.
:)
После того как у меня программа сожрала за 2 часа работы 1,5 гигабайта и сдохла я больше не пользуюсь без совсем уж необходимости "красивыми" компонентами.
:)
ЗЫ. Заменил прогресс бар на штатный и программа за сутки работы больше 100 метров не наедала.
← →
Kolan © (2008-01-29 13:59) [20]> ЗЫ. Заменил прогресс бар на штатный и программа за сутки
> работы больше 100 метров не наедала.
Это, на самом деле, страшно…
← →
Anatoly Podgoretsky © (2008-01-29 14:12) [21]> homm (29.01.2008 12:28:12) [12]
Я отвечаю на заданный вопрос, ну а последствия тяжелы, просто это бессмысленно, ну освободит, а программа снова в судорогах займет. Но на какое то время он получит удовлетворение, а для чего оно ему нужно я не знаю, не Фрейд.
← →
Anatoly Podgoretsky © (2008-01-29 14:12) [22]> Думатель (29.01.2008 12:46:13) [13]
Ну ну. и при этом говоришь про графику, знаешь сколько там подводных камней с ресурсами.
← →
homm © (2008-01-29 21:41) [23]> [19] ANB © (29.01.08 13:34)
> После того как у меня программа сожрала за 2 часа работы
> 1,5 гигабайта и сдохла я больше не пользуюсь без совсем
> уж необходимости "красивыми" компонентами.
Это тебе нужео было моими компонентами пользоваться :) Вот только, боюсь, под VCL я наверное уже не портирую их уже никогда.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.052 c