![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Увеличение затрат ОП при использовании ADO [D6]
Ик сик © (2003-03-17 15:59:00)Имеется ADODataSet. При подключении к БД опер. память, занимаемая программой подскакивает с 2,8 mb до 6,4 mb, причем после ADODataSet.close или ADODataSet.active := false эта память не освобождается.
В чем тут проблема и можно ли ее решить?
Ик сик (2003-03-19 12:24:00) [1]Не получается, тоже самое
jocko (2003-03-18 17:18:00) [2]Могу предположить:
Память занимаемая интерфейсом освобождается при обнуленни количества ссылок на него, ADODataSet, мне так кажется, лежит (принадлежит) на главной форме? если положить его на модуль данных и затем уничтожить его (модуль данных) - память освободится.
Проверить сейчас не могу, интересно услышать мнения...
aterm (2003-03-18 15:27:00) [3]Проблема возникает даже при использовании TQuery!
Память просто не освобждается!
Ик сик (2003-03-18 15:09:00) [4]Неужели никто не знает как с этим разобраться?
aterm (2003-03-18 12:59:00) [5]Даже если создавать компонент динамически, результат такой же.
Объем занимаемой памяти увеличивается во время выполнения запроса. Даже после уничтожения компонента размер не уменьшается.
Shaman (2003-03-18 12:22:00) [6]Используй dbExpress. Он в этом плане гораздо легче и эффективнее. Правда в 6-х дельфях нет поддержки MSSQL (можно взять драйвера из 7-х) и OS Authentication работает половинчато, но с этим мириться можно.
aterm (2003-03-18 11:38:00) [7]Я тоже копался с этим:)
Можно узнать размер хотя бы при помощи TaskManager-a в win2k:)
Дело в том, что увеличивается и размер используемой виртуальной памяти!
А самое банальное...
Пример:
AdoQuery1.sql:="insert into some_table_name some ("some value")":)
Вот на этой строке размер и увеличивается!
Увеличивается примерно на 2 мега.
Ик сик (2003-03-18 11:37:00) [8]Ну существует такая вещь как Task Manager в Win2K... :))
a123 (2003-03-17 17:56:00) [9]Ик сик, можно узнать у Вас как Вы занимаемую память считаете?
Ик сик (2003-03-17 17:11:00) [10]Ладно, я сейчас ухожу, у меня рабочий день закончился, завтра попытаюсь разобраться.
Ик сик (2003-03-17 17:05:00) [11]Даже после AdoDataSet.free память не освобождается.
Соловьев (2003-03-17 17:00:00) [12]А если сделать ADODataSet динамически создаваемым?
jocko (2003-03-17 16:58:00) [13]наверное потому, что ADODataSet только обертка для интерфейса _Recordset, количество ссылок при закрытии не уменьшается вот память и не освобождатся...
вообще вопрос интересный, особенно в условиях критичности приложения к ресурсам
Ик сик (2003-03-17 16:55:00) [14]Зачем освобождать память? Нуу... чтобы больше ее было :))
Программа периодически пополняет базу данных информацией из внешних источников. При каждом запросе занимаемая оперативка увеличивается. После двух часов работы - 17 mb/
Соловьев (2003-03-17 16:43:00) [15]Зачем тебе это? Просто, ради ознакомления?
Kuusiniemi (2003-03-17 16:43:00) [16]А кто сказал, что она должна освобождаться? Билл Гейтс это Вам сказал?
Ик сик (2003-03-17 16:38:00) [17]Удалено модератором
Примечание: Со
Ик сик (2003-03-17 16:19:00) [18]Удалено модератором
Примечание: Создание пустых сообщений