Russian Qt Forum
Февраль 10, 2012, 15:56
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
(Модератор:
Sergeich
) >
Увеличение потребления памяти, Qt + MySQL, утечка памяти?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Увеличение потребления памяти, Qt + MySQL, утечка памяти? (Прочитано 1275 раз)
MyIQNegative
Гость
Увеличение потребления памяти, Qt + MySQL, утечка памяти?
«
:
Июль 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кб. На что? Помогите разобраться, пожалуйста.
Записан
MyIQNegative
Гость
Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти?
«
Ответ #1 :
Июль 18, 2010, 18:50 »
Неужто ни у кого нет никаких предположений?
Записан
sarbash
Чайник
Offline
Сообщений: 87
Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти?
«
Ответ #2 :
Июль 18, 2010, 23:26 »
Вот это:
Код:
tempQuery = 0;
зря. Отсюда, скорее всего, и утечка.
Записан
В главном - единство, во второстепенном - свобода, во всём - любовь.
MyIQNegative
Гость
Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти?
«
Ответ #3 :
Июль 19, 2010, 04:52 »
Нет, проверял, утечка не изза зануления query. Проверял не один раз. Здесь что-то другое.
Записан
NicK
Самовар
Offline
Сообщений: 102
Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти?
«
Ответ #4 :
Июль 19, 2010, 09:01 »
Ничего страшного. У меня такая же ситуация. Таким же образом по таймеру в отдельном потоке создаю временное подключение к БД,а потом его удаляю.
Как показывает практика, расход памяти увеличивается в течение какого-то времени, но до определенного предела (как правило, не более мегабайта на десять созданных/удаленных соединений). После этого создание-работа-удаление соединения не приводит к утечке памяти (точнее, память корректно освобождается).
Записан
MyIQNegative
Гость
Re: Увеличение потребления памяти, Qt + MySQL, утечка памяти?
«
Ответ #5 :
Июль 19, 2010, 09:59 »
Спасибо за ответ, буду надеяться на то, что вся память не сожрется
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...