![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| aktuba |
|
||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 2 Всего: 38 |
Ужас... Всю ночь ковырял код, искал утечки памяти в своем коде (правда, заодно и оптимизировал =))), а утечка оказалась в TThread. Смотрите, вот основной модуль программы:
а вот юнит потока:
Как Вы можете видеть, этот код не делает вообще ничего (кроме как грузит проц =))), но утечки получаются бешенные. Кто сталкивался? Как пофиксить???? -------------------- ![]() |
||||
|
|||||
| bazzzman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 24.7.2006 Репутация: нет Всего: 2 |
Сам не сталкивался. Может это поможет?
http://qc.borland.com/wc/qcmain.aspx?d=9223 И еще: очень интересно чем замеряешь утечки памяти? TaskMan? |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 2 Всего: 38 |
Да, в основном TaskMan... Да и замерять не стоит сильно. Запусти этот код на пару часов, получишь Out of Memory... P.S.: к сожаление не помогло =(((( Это сообщение отредактировал(а) aktuba - 16.4.2007, 08:59 -------------------- ![]() |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 19 Всего: 95 |
Странно... Запустил предоставленный код - не получил утечек вообще, тем более не получил "бешенных" утечек (замерялось по TaskMan). Только среда (дельфи 7) потекла (возможно, глючит режим отладки). При автономном запуске приложения - никаких утечек вообще.
P.S. Если ты используешь Resume и WaitFor - тогда создавать поток надо с CreateSuspended = true (хотя у тебя это все и обрамлено блоком try...except...end)... -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 30 Всего: 484 |
aktuba, 7-ка патченная?
Утечка в Tthread - бага известная. Точно не скажу, но вроде лечится накатыванием сервиспака. А может и нет... Я давно уж на турбе пишу. Там этой баги точно нет. |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 2 Всего: 38 |
Snowy, есть там эта утечка!!! я тоже на Турбе пишу...
-------------------- ![]() |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Я проверил BDS без паков. Тоже чисто.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
Да всё нормально. Просто «Диспетчер задач» фтопку
Он не отображает реальной картины. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 2 Всего: 260 |
||||
|
||||
| evgeniikim |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.4.2007 Репутация: нет Всего: нет |
Трудно ответить наверняка в чем может быть бага, но я привык их избегать писать код явно и правильно, без мыслей типа "при первом использовании переменной integer она всегда должна быть 0 - не всегда, бывает и по другому"- поэтому все ставлю InterlockedExchange(переменная,0); - это наглядная философия.
а вот код, практически такой же как у тебя, только с небольшими поправками: Вызов:
Сама нить:
Прекрасно работает на: Delphi 7 + сервис паки (7.1 версия получается) Delphi 2006 + SP1+SP2 Delphi 2007 под явным указанием я имею в виду, я не полагаюсь на автоматические конструктор и деструктор потока, выше я их описал, и еще небольшая ошибочка, я даже сказал не ошибочка, а недоразумение:
Если хочешь использовать Resume, то сделай так:
так же я явно указал FreeOnTerminate:=false, в твоей реализации нужно поставить именно так. Если придерживаться правильности и ясности кода, дожно быть все ОК! Удачи! |
||||||||
|
|||||||||
| aktuba |
|
||||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 2 Всего: 38 |
D7, TD...
на ноуте и на работе...
торопился. писал в браузере, а не переносил с редактора, отсюда и небольшое недоразумение... -------------------- ![]() |
||||||
|
|||||||
| evgeniikim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.4.2007 Репутация: нет Всего: нет |
Так что? так проблема и осталась?
Если проблема осталась, нужно найти другой компилятор(релиз Дельфи) или поставить максимальный сервис пак. Утечек здесь не должно быть. Это сообщение отредактировал(а) evgeniikim - 17.4.2007, 20:51 |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |