Название: Увеличение потребления памяти, Qt + MySQL, утечка памяти? Отправлено: MyIQNegative от Июль 16, 2010, 09:13 Добрового времени суток, друзья. Есть одна забавная ситуация. При создании коннекта к базе данных и выполнении QSqlQuery увеличивается потребляемая приложением память. С чем бы это могло быть связано.
Вот код тестовой функции: Цитировать void testFunction() { // имя базы данных QString DBname = "myDB"; { // создание соединения с базой данных QSqlDatabase mainDB = QSqlDatabase::addDatabase("QMYSQL", DBname); // установление параметров соединения mainDB.setHostName(MainDBHostName); mainDB.setDatabaseName(MainDBDatabaseName); mainDB.setUserName(MainDBUserName); mainDB.setPassword(MainDBUserPass); // открытие базы данных if(!mainDB.open()) { sendLogMsg("cannot open database"); sendLogMsg(mainDB.lastError().text()); return; } } { // создание и выполнение запроса к БД // сам запрос увесистый, выборки 6000+ строк таблицы QSqlQuery tempQuery(QSqlDatabase::database(DBname)); tempQuery.exec("select * from organisations"); tempQuery.clear(); tempQuery = 0; } // закрытие соединения с базой данных (QSqlDatabase::database(DBname)).close(); QSqlDatabase::removeDatabase(DBname); qDebug() << "database deleted"; } Суть в том, что моему приложению нужно будет временно создавать соединение к БД, затем выполнять запросы и удалять соединение. Постоянно поддерживать его нельзя. Как же быть, если потребляемая память постепенно увеличивается. 200 вызовов такой функции увеличивают потребление на 200кб. На что? Помогите разобраться, пожалуйста. Название: Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти? Отправлено: MyIQNegative от Июль 18, 2010, 18:50 Неужто ни у кого нет никаких предположений?
Название: Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти? Отправлено: sarbash от Июль 18, 2010, 23:26 Вот это:
Код: tempQuery = 0; Название: Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти? Отправлено: MyIQNegative от Июль 19, 2010, 04:52 Нет, проверял, утечка не изза зануления query. Проверял не один раз. Здесь что-то другое.
Название: Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти? Отправлено: NicK от Июль 19, 2010, 09:01 Ничего страшного. У меня такая же ситуация. Таким же образом по таймеру в отдельном потоке создаю временное подключение к БД,а потом его удаляю.
Как показывает практика, расход памяти увеличивается в течение какого-то времени, но до определенного предела (как правило, не более мегабайта на десять созданных/удаленных соединений). После этого создание-работа-удаление соединения не приводит к утечке памяти (точнее, память корректно освобождается). Название: Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти? Отправлено: MyIQNegative от Июль 19, 2010, 09:59 Спасибо за ответ, буду надеяться на то, что вся память не сожрется :)
|