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

Вниз

Инструменты для поиска "утечки" памяти в проекте   Найти похожие ветки 

 
DelphiN!   (2008-02-25 13:16) [0]

Есть большой проект, в котором имеется "утечка" памяти, необходимо ее устранить, а чем вооружиться не знаю. Большой плюс в инструменте для поиска "утечек" был бы - возможность просматривать содержимое прирастающей памяти, чтобы на основе этих данных делать выводы о местонахождении ошибки.
 Был бы признателен за рекомендацию инструментов и прочие советы по поиску мест утечек памяти в проекте

Проект написан в Delphi 6


 
Правильный_Вася   (2008-02-25 13:20) [1]

MemProof


 
Andy BitOff ©   (2008-02-25 13:32) [2]

EurekaLog
http://www.eurekalog.com/


 
ANTPro ©   (2008-02-25 13:38) [3]

FastMM4


 
Dimaxx ©   (2008-02-25 17:10) [4]

MemCheck
http://v.mahon.free.fr/pro/freeware/memcheck/


 
VirEx ©   (2008-02-25 17:56) [5]


> [3] ANTPro ©   (25.02.08 13:38)
> FastMM4

спасибо, даж перевод (на русском) сообщений есть :)


 
DVM ©   (2008-02-25 19:06) [6]

FastMM4 не покажет утечки объектов GDI, User и т.д. Надо иметь в виду.


 
TUser ©   (2008-02-26 05:58) [7]

GC рулит, но его у нас нет :)


 
Mystic ©   (2008-02-26 11:55) [8]

> GC рулит, но его у нас нет :)

От задачи зависит.


 
VirEx ©   (2008-02-26 17:34) [9]

Вопрос такой.
В execute выполняется некий код со string (uppercase, inttostr,...), thandle.
Есть кнопка прерывающая выполнение.
Ежели пару раз прервать нить и заново запустить, будут утечки памяти.
Как избежать утечек?


 
Mystic ©   (2008-02-26 18:29) [10]

А как прервать? Если TerminateThread(), то избавится от утечет памяти никак нельзя. Если поток заканчивает свое выполнение выходом из Execute(), никаких утечек не будет


 
VirEx ©   (2008-02-26 18:55) [11]

яяясно...


 
VirEx ©   (2008-02-26 19:25) [12]

а есть ли каконибудь метод нотификации для нити, при котором можно было выйти в функцию финализации компонента и спокойно прибить эту нить


 
тимохов   (2008-02-28 00:13) [13]

как не попиарица http://timokhov.blogspot.com/2007/03/delphi-2007-iii-fastmm.html (остальное не читать :-Р )

сам пользуюсь давно, несмотря на кривой стек с лишними записями (сам Ле Риш говорит, что не фига в дельфи невозможно 100% разобрать стек вызовов) найти мне ВСЕГДА удавалось место утечки.


 
Mystic ©   (2008-02-28 10:19) [14]

> а есть ли каконибудь метод нотификации для нити, при котором
> можно было выйти в функцию финализации компонента и спокойно
> прибить эту нить


Все зависит от того, что делает поток. Если он ждет каких-то нотификаций через WatForSingleObject или WaitForMultipleObject, то можно просто сделать специальный event (CreateEvent), который будет срабатывать в том случае, когда надо завершить поток. Если это вычисления, то тут я не знаю лучшего способа, чем проверять значение Terminated. Правда в мечтах написать функцию RaiseExceptionInThread(Thread: THandle; E: Exception), которая бы бросала исключение в указанный поток (таким образом можно было бы легко прерывать вычисления без постоянных проверок), но пока думаю, как бы это сделать...


 
pasha_golub ©   (2008-02-28 10:35) [15]

AQTime



Страницы: 1 вся ветка

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
2-1205998156
Vetal73
2008-03-20 10:29
2008.04.13
Выход из приложения


4-1186469502
kotbazilio
2007-08-07 10:51
2008.04.13
Active Desktop


2-1205821694
Unknowing
2008-03-18 09:28
2008.04.13
Либо чудо, либо фокус...


2-1205669366
NSer
2008-03-16 15:09
2008.04.13
Как присвоить DateTimePicker = 01.01.2008 ?


15-1204268166
Pos Eleptant (c)
2008-02-29 09:56
2008.04.13
Цветной Row в DBGrid e