Название: Утечка памяти? Отправлено: Aeon от Февраль 04, 2010, 08:21 есть следующий код
Код Когда идёт обработка, приложение память просто пожирает со страшной скоростью. После обработки 12-ти тысяч файлов съело около 1.5 гигабайт. ткните носом где ошибка, целый день уже сижу, не могу разобраться :( попробовал с qt 4.5.3 и 4.6.0 - результат одинаковый. ос - Федора 12. Название: Re: Утечка памяти? Отправлено: BRE от Февраль 04, 2010, 08:35 Под valgrind запускал?
Название: Re: Утечка памяти? Отправлено: Aeon от Февраль 04, 2010, 08:52 да.
правда валгринд для меня, конечно - "злое колдунство" но строку Код: ==27934== All heap blocks were freed -- no leaks are possible ошибки он вообще находит, но они относятся, в основном к libGLcore.so также пробовал заюзать google perfomance tools. тоже никаких ответов. Название: Re: Утечка памяти? Отправлено: Rcus от Февраль 04, 2010, 09:04 У Valgrind есть режим massif для изучения распределения памяти в ходе работы приложения.
Название: Re: Утечка памяти? Отправлено: Sancho_s_rancho от Февраль 04, 2010, 16:50 Я xml-ов не нюхал и может проблема в их обработке. Но явную хрень представляет собой открытие файла, проверка открылся ли и последующая работа с ним даже если он не открылся
Код: QFile file(tmp); Название: Re: Утечка памяти? Отправлено: KADABRA от Февраль 04, 2010, 19:26 есть следующий код Интереса ради, после sqlQuery.exec() добавьте sqlQuery.clear().... Название: Re: Утечка памяти? Отправлено: ecspertiza от Февраль 04, 2010, 21:38 Да и вместо QXmlQuery поюзай лудше QXmlStreamReader, да геморойно, да парсить самому придется, ну чуится мне что QXmlQuery хранит файл в памяти, а удаляет его от туда либо по желанию програмера либо при уничтожении, в твоем случае мне кажется что это будет по выходу из процедуры, может я неправ конечно, но еше как вариант попробуй в самом конце цикла написать query.deleteLater();
Название: Re: Утечка памяти? Отправлено: Aeon от Февраль 05, 2010, 00:35 Я xml-ов не нюхал и может проблема в их обработке. Но явную хрень представляет собой открытие файла, проверка открылся ли и последующая работа с ним даже если он не открылся да, хрень, но дело явно не в этом.Интереса ради, после sqlQuery.exec() добавьте sqlQuery.clear(). пробовал уже... нулевой результат.удаляет его от туда либо по желанию програмера либо при уничтожении, в твоем случае мне кажется что это будет по выходу из процедуры, может я неправ конечно, но еше как вариант попробуй в самом конце цикла написать query.deleteLater(); да я то желаю его оттуда удалить, но нет у класса QXmlQuery членов, которые позволяют это сделать.код который я написал выполняется в отдельном треде, память не высвобождается не то что по выходу из процедуры, а даже после того, как отрабатывает тред... сигнал finished мне от него приходит, а память не освобождается. и... Код: ‘class QXmlQuery’ has no member named ‘deleteLater’ :( У Valgrind есть режим massif для изучения распределения памяти в ходе работы приложения. С наскоку с массифом разобраться не получилось. Буду сейчас ман грызть дальше--- так... вынес создание QXmlQuery за цикл... использование памяти упало до 600 метров... это конечно хорошо, но ресурс в итоге всё равно ведь не освобождается. Название: Re: Утечка памяти? Отправлено: Aeon от Ноябрь 02, 2010, 09:16 Решил проверить, профиксили ли баг в 4.7, оказалось, что нет.
Кто может, проголосуйте за него - http://bugreports.qt.nokia.com/browse/QTBUG-5823 (http://bugreports.qt.nokia.com/browse/QTBUG-5823) А то с тем количеством голосов, что у него сейчас - надежды мало. Название: Re: Утечка памяти? Отправлено: crackedmind от Ноябрь 02, 2010, 10:28 QSqlQuery sqlQuery; за пределами цикла объявлено? Если так, то сам себе злобный буратино, на каждой итерации при вызове prepare забиваются внутренние данные типа массив и хэшей. Сорцы Qt для чего существуют? :)
Название: Re: Утечка памяти? Отправлено: Aeon от Ноябрь 03, 2010, 02:02 если попробовать пройти по ссылке выше, то там явно ни слова про sql не написано.
|