Название: [решено] Утечка в WinXP: есть или нету? Отправлено: serg_hd от Апрель 27, 2010, 12:31 Программа постоянно создаёт объекты (не автоматические, через new), каждый из которых при завершении своей работы удаляется. Удаляется 100%, т.к. объект слишком прост, чтобы что-то упустить. Всё бы ничего, но виндовый диспетчер показывает, что память всё равно, хоть и медленно, но растёт. И что самое интересное - если свернуть/развернуть приложение в панель задач, то память резко чистится. Т.е. если доросла, напр., до 100mb то после свёртывания/развёртывания - 20mb. Причём следующие разы эту процедуру можно не проделывать - утечки (если это, конечно, она) уже не будет. Я понимаю, что виндовый диспетчер не показатель, но всё же. Может кто-то знает ответ?
Название: Re: Утечка в WinXP: есть или нету? Отправлено: garryHotDog от Апрель 27, 2010, 13:22 Утечка какой памяти виртуальной или оперативной?
Название: Re: Утечка в WinXP: есть или нету? Отправлено: serg_hd от Апрель 27, 2010, 13:22 оперативной
Название: Re: Утечка в WinXP: есть или нету? Отправлено: garryHotDog от Апрель 27, 2010, 13:24 работа с сокетами или потоками есть?
Название: Re: Утечка в WinXP: есть или нету? Отправлено: serg_hd от Апрель 27, 2010, 13:33 работа с сокетами или потоками есть? с потоками да. Создаётся объект потока, он делает что надо, при окончании работы посылает сигнал на удаление себя же (в главный поток, который его создал), и, соответственно, удаляется.Название: Re: Утечка в WinXP: есть или нету? Отправлено: mal от Апрель 27, 2010, 13:36 если юзаешь Visual Studio - посмотри тут
http://www.prog.org.ru/topic_13305_0.html (http://www.prog.org.ru/topic_13305_0.html) чтоб быть уверенным что все удаляешь. Если что-то все же не удаляешь - найдешь стопудово. Название: Re: Утечка в WinXP: есть или нету? Отправлено: serg_hd от Апрель 27, 2010, 13:36 не, не юзаю. Если бы я что-то не удалял, то после сворачивания/разворачивания окна память не чистилась бы о_О.
Кстати вот уже 2 часа работает, утечек нет. А сворачивал или нет - не помню)). Странно это всё... Название: Re: Утечка в WinXP: есть или нету? Отправлено: garryHotDog от Апрель 27, 2010, 16:33 попробуй при создании потока соединить его на "самоуничтожение"
Код: // создаем поток. память будет освобождена по завершению потока 100% Название: Re: Утечка в WinXP: есть или нету? Отправлено: spectre71 от Апрель 27, 2010, 18:27 Кстати вот уже 2 часа работает, утечек нет. А сворачивал или нет - не помню)). Странно это всё... Нет ничего странного! Объекты в куче создаются/освобождаются. ОС выделяет память приложению постранично. Если приложению необходимо выделить память N байт, то просматриваются уже отданные приложению страницы на предмет минимального непрерывного свободного куска памяти как минимум в N байт. В случае если такого куска нет, то запрашивается новая страница! Поскольку объекты создаются/удаляются, то выделенные страницы памяти могут фрагментироваться и для нового объекта может не найтись свободного непрерывного куска памяти в N байт в уже выделенных страницах, хотя общая сумма свободной памяти в этих страницах может быть гораздо больше. Как правило через некоторое время все уравновешивается, даже при очень интенсивном создании/удалении объектов (если их максимальное число не нарастает, и они одни и те же). Поэтому, некоторое время память будет кушаться(сколько зависит от конкретной прозраммы итд.), а дальше может и престать(если нет утечки). Название: Re: Утечка в WinXP: есть или нету? Отправлено: serg_hd от Апрель 27, 2010, 19:58 Кстати вот уже 2 часа работает, утечек нет. А сворачивал или нет - не помню)). Странно это всё... Нет ничего странного! Объекты в куче создаются/освобождаются. ОС выделяет память приложению постранично. Если приложению необходимо выделить память N байт, то просматриваются уже отданные приложению страницы на предмет минимального непрерывного свободного куска памяти как минимум в N байт. В случае если такого куска нет, то запрашивается новая страница! Поскольку объекты создаются/удаляются, то выделенные страницы памяти могут фрагментироваться и для нового объекта может не найтись свободного непрерывного куска памяти в N байт в уже выделенных страницах, хотя общая сумма свободной памяти в этих страницах может быть гораздо больше. Как правило через некоторое время все уравновешивается, даже при очень интенсивном создании/удалении объектов (если их максимальное число не нарастает, и они одни и те же). Поэтому, некоторое время память будет кушаться(сколько зависит от конкретной прозраммы итд.), а дальше может и престать(если нет утечки). Название: Re: [решено] Утечка в WinXP: есть или нету? Отправлено: serg_hd от Апрель 27, 2010, 21:33 Эх, найти бы ещё где-нибудь толковую статейку по возможностям Qt. Т.е. какие операции трудоёмки, а какие нет, в каких ситуациях что предпочтительней использовать в целях экономии времени и ресурсов системы. Мне, например, интересно тяжёлы ли для софтины сигналы/слоты или не очень. Речь идёт именно о больших нагрузках, сотни потоков, каждый из которых использовал бы их к примеру.
|