Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

Как принудительно уменьшить объем памяти, занимаемый программой?   Найти похожие ветки 

 
Думатель   (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]

Утечек, которые показывают профайлеры может и нет. Может ты перед закрытием все освобождаешь.
Но в процессе работы, ты ненужное не мочишь&#133 Ищи где такие места могут быть.


 
Игорь Шевченко ©   (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 метров не наедала.

Это, на самом деле, страшно&#133


 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.014 c
11-1169247642
Моторокер
2007-01-20 02:00
2008.02.24
TKOLTrayIcon и подсказки в трее (balloons, not hints)


15-1200776703
Riply
2008-01-20 00:05
2008.02.24
Рекурсивная работа с FindFirst/Next


2-1201674470
vegarulez
2008-01-30 09:27
2008.02.24
Как обойти вызов соединения при использовании:


15-1200920579
IceBeerg
2008-01-21 16:02
2008.02.24
Зависает TURBO DELPHI EXPLORER


2-1201798008
batya-x
2008-01-31 19:46
2008.02.24
дождаться нажатия клавиши