Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
15-1204535379
Vemer
2008-03-03 12:09
2008.04.13
Ошибка с rtl60.bpl на новойм компьютере.


15-1204111799
TUser
2008-02-27 14:29
2008.04.13
Сервис - каталог каталогов ссылок


15-1204255209
Paska
2008-02-29 06:20
2008.04.13
Фильтрация трафика


15-1204167411
Slider007
2008-02-28 05:56
2008.04.13
С днем рождения ! 28 февраля 2008 четверг


2-1205655917
NewSer
2008-03-16 11:25
2008.04.13
Как проверить уникальность вводимого в ключевое поле значения?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский