Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: max1983 от Июль 19, 2009, 09:56



Название: Утечка памяти - виноват GUI?
Отправлено: max1983 от Июль 19, 2009, 09:56
Утечка памяти - виноват GUI?

Кинул на форму пару стандартных элементов.
Откомпилил в Release.
Запускаю и делаю Resize маусом.
В диспетчере задач наблюдаю утечку памяти.

Ет ток у меня так?


Название: Re: Утечка памяти - виноват GUI?
Отправлено: f-r-o-s-t от Июль 19, 2009, 10:46
И как в диспечере отображается утечка, на сколько ?=)


Название: Re: Утечка памяти - виноват GUI?
Отправлено: max1983 от Июль 19, 2009, 11:50
И как в диспечере отображается утечка, на сколько ?=)
Стартовое значение при запуске - 5608
1 минута ресайза - 9 700
и дальше вроде не растет.
Пару кнопок меняют стиль поочередное нажимание съело еще 5 метров.

Ну так что ет ток у меня так?

Конечно я понимаю что утечка незначительная но 10 метров для приложение котороеимеет 15 кнопок и еще 5 контролов которые ничего не делают  ???


Название: Re: Утечка памяти - виноват GUI?
Отправлено: Rcus от Июль 19, 2009, 11:51
Хотел написать про то что стыдно измерять утечки при помощи taskmgr, а потом глянул на цены Purify, BoundsChecker и AQtime :)
Ну нафиг эту винду, Valgrind + memcheck | massif /* В данном случае я бы взял именно его */ | callgrind(+KCachegrind) хоть тормозит, но всегда под рукой :)


Название: Re: Утечка памяти - виноват GUI?
Отправлено: max1983 от Июль 19, 2009, 11:57
Хотел написать про то что стыдно измерять утечки при помощи taskmgr, а потом глянул на цены Purify, BoundsChecker и AQtime :)
Ну нафиг эту винду, Valgrind + memcheck | massif /* В данном случае я бы взял именно его */ | callgrind(+KCachegrind) хоть тормозит, но всегда под рукой :)

Да я не ищущий баги в библиотеке QT
Просто интересно как у других..
И как дела в линьке и  маке.


Название: Re: Утечка памяти - виноват GUI?
Отправлено: f-r-o-s-t от Июль 19, 2009, 12:05
Хотел написать про то что стыдно измерять утечки при помощи taskmgr, а потом глянул на цены Purify, BoundsChecker и AQtime :)
Ну нафиг эту винду, Valgrind + memcheck | massif /* В данном случае я бы взял именно его */ | callgrind(+KCachegrind) хоть тормозит, но всегда под рукой :)
Я уже давно решил что нафиг =)

Стартовое значение при запуске - 5608
1 минута ресайза - 9 700
и дальше вроде не растет.
Пару кнопок меняют стиль поочередное нажимание съело еще 5 метров.
Ну так что ет ток у меня так?
Запустил vbox попробывал, при продолжении ресайза в меньшую сторону
память тоже медленно уменьшается.


Название: Re: Утечка памяти - виноват GUI?
Отправлено: Kagami от Июль 19, 2009, 13:29
Вроде Qt использует буферизацию окна для ускорения скорости отрисовки. Скорее всего это кеш растет с увеличением размера окна.


Название: Re: Утечка памяти - виноват GUI?
Отправлено: lit-uriy от Июль 19, 2009, 14:23
max1983, диспетчер задач - не измерительный инструмент.
По нему лучше ориентироваться, имеется ли процесс в памяти и всё.

Если ты будешь работать с контейнерами Qt, то диспетчер задач тебя вообще сильно озадачит.


Название: Re: Утечка памяти - виноват GUI?
Отправлено: ufna от Июль 19, 2009, 15:17
да, в диспетчере задач по этому делу чудеса творятся, особенно если много чего рисуется своими методами, а еще и с контейнерами..

к счастью, это не значит что все плохо :)


Название: Re: Утечка памяти - виноват GUI?
Отправлено: max1983 от Июль 19, 2009, 15:52
max1983, диспетчер задач - не измерительный инструмент.
По нему лучше ориентироваться, имеется ли процесс в памяти и всё.

Если ты будешь работать с контейнерами Qt, то диспетчер задач тебя вообще сильно озадачит.

Значит последняя страшная история такова:
Для создание красивого интерфейса как-то решил использовать один популярный контрол
все в стиле office 2007 и после 3 недель разработки проги с его "крутым дизайном" обнаружил что размер
проги после 10 резайзов формы стал почти 80 метров в диспетчере задач
тут и так понятно что дело просто дрянь.
чем больше ресайзов тем больше размер
с тех пор чтоб не терять дорого время проверяю таким быстрым способом
понятно что ето не профессионально но и так понятно когда с оперативы пропали 100 метров то и любой способ для проверки пойдет

тут ситуация не такая страшная  ;D
вот я подумал мож у кого есть готовый проект, ему та просто стоить запустить прогу и ресайзить немного
и поделится с народом опытом. ;)



Название: Re: Утечка памяти - виноват GUI?
Отправлено: lit-uriy от Июль 19, 2009, 16:07
max1983, прога есть у всех, Qt Assistant/Designer, виджетов в нём достаточно, тестируй, сравнивай.

Тест на Асистенте:
22М/13М
Если я изменяю размер Асистента в большую сторону то получаю
23М/14М
Если я изменяю размер Асистента в меньшую сторону то получаю
22М/13М


Название: Re: Утечка памяти - виноват GUI?
Отправлено: Фродо от Август 03, 2009, 21:37
Юзай Деликер!


Название: Re: Утечка памяти - виноват GUI?
Отправлено: SASA от Август 04, 2009, 12:35
max1983, диспетчер задач - не измерительный инструмент.
По нему лучше ориентироваться, имеется ли процесс в памяти и всё.

Не согласен. Может память он кажет не верно, но GUI ресурсы показывает правильно.
Про  Qt.
Я писал на форуме про утечку регионов http://www.prog.org.ru/topic_7602_0.html (http://www.prog.org.ru/topic_7602_0.html).
Пишем  тролям. Они - "У нас ваша тестовая программа работает нормально. И диспетчер задач - не измерительный инструмент".
Но не скажешь же, что ворованый BoundsChecker показывает утечку, причём дикую!
Засняли ролик, как полсе выделения 10000-ого ресурса окно перестаёт отрисовываться. Месяц не было ответа, потом закончилась лицензия :( Вообщем, троли в утечках не признаются.


Название: Re: Утечка памяти - виноват GUI?
Отправлено: pastor от Август 04, 2009, 22:51
Но не скажешь же, что ворованый BoundsChecker показывает утечку, причём дикую!

А зачем им это знать, ворованный ли у тебя BoundsChecker или нет. Отправил лог да и все. Лицензию на BoundsChecker точно запрашивать небудут :)


Название: Re: Утечка памяти - виноват GUI?
Отправлено: ритт от Август 05, 2009, 02:59
Засняли ролик, как полсе выделения 10000-ого ресурса окно перестаёт отрисовываться. Месяц не было ответа, потом закончилась лицензия :( Вообщем, троли в утечках не признаются.
странное заявление. как минимум потому, что буквально на днях *бага* с использованием объекта гди в регионах была официально исправлена для 4.6.0:
Цитировать
- QRegion is no longer a GDI object by default. This means it is no
   longer subjuect to gui-thread only nor does it potentially impact
   the 10.000 GDI object limit per process. By explicitly calling
   .handle() a GDI object will be created and memory managed by
   QRegion. The native handle is for reading out only. Any GDI calls
   made on the HRGN handle will not affect the QRegion.

бага без номера - подозреваю, уведомлял об утечке не через трекер?


Название: Re: Утечка памяти - виноват GUI?
Отправлено: Фродо от Август 17, 2009, 14:37
Говорю же юзай Деликер и не парься:
http://deleaker.ru/
Сразу все покажет


Название: Re: Утечка памяти - виноват GUI?
Отправлено: SASA от Август 17, 2009, 16:05
Про deleaker. Мелкие примеры на нём работают отлично. Всё показывает, всё хорошо. Попытка запустить его с большим проектом провалилась. 30 минут смотрел как подгружаются длл. Вообщем использовать его не получилось. Ещё плохая справка. Разобраться как установить фильтр не смог.

Про ошибку в Qt. У нас фиксированая версия qt. Поэтому писать о багах нет смысла. Нам надо обойти ошибку, а не услышать "в следущей версии всё будет исправлено". До этого они помагали чем могли. А тут прикинулись шлангами. На первое письмо ответили на следущий день, на второе - черезь неделю, на третье - черезь месяц, на четвёртое (с роликом) ответа не дождались...


Название: Re: Утечка памяти - виноват GUI?
Отправлено: max1983 от Август 18, 2009, 11:42
Цитировать
на четвёртое (с роликом) ответа не дождались...
Да просто занесли вас в black list, как злобных спамеров.  ;D
Ставь видео на ютуб!


Название: Re: Утечка памяти - виноват GUI?
Отправлено: SASA от Август 18, 2009, 18:27
Ставь видео на ютуб!
http://www.youtube.com/watch?v=y2dhqGknB7c (http://www.youtube.com/watch?v=y2dhqGknB7c)
Исходники прикрепил.


Название: Re: Утечка памяти - виноват GUI?
Отправлено: ритт от Август 19, 2009, 01:38
красивый мультик.
на 4.6 пробовал повторить?


Название: Re: Утечка памяти - виноват GUI?
Отправлено: SASA от Август 19, 2009, 10:31
на 4.6 пробовал повторить?
Неа. Я ж говорю: версия qt фиксированая. А проводить эксперементы с новыми билдами лень.

Ролик записан на Intel Core 2 Duo E8400, Windows XP Professional 5.1.2600.5512 Service Pack 3 Build 2600, MS Visual Studio 2008, Qt 4.4.3.



Название: Re: Утечка памяти - виноват GUI?
Отправлено: ритт от Август 19, 2009, 10:38
всё-таки не поленись - проверь на 4.6...


Название: Re: Утечка памяти - виноват GUI?
Отправлено: SASA от Август 26, 2009, 11:38
Собрал на 4.5.1. Всё работает как часы - утечек нет.
Исправили  :D


Название: Re: Утечка памяти - виноват GUI?
Отправлено: shadone от Сентябрь 07, 2009, 19:20
Засняли ролик, как полсе выделения 10000-ого ресурса окно перестаёт отрисовываться. Месяц не было ответа, потом закончилась лицензия :( Вообщем, троли в утечках не признаются.
странное заявление. как минимум потому, что буквально на днях *бага* с использованием объекта гди в регионах была официально исправлена для 4.6.0:
Цитировать
- QRegion is no longer a GDI object by default. This means it is no
   longer subjuect to gui-thread only nor does it potentially impact
   the 10.000 GDI object limit per process. By explicitly calling
   .handle() a GDI object will be created and memory managed by
   QRegion. The native handle is for reading out only. Any GDI calls
   made on the HRGN handle will not affect the QRegion.

бага без номера - подозреваю, уведомлял об утечке не через трекер?
мм, а где бага? я вижу что только написано что QRegion был оптимизирован чтобы не использовать родной (и тормозной) виндовый HRGN.