Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Увеличение затрат ОП при использовании 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]

Удалено модератором
Примечание: Создание пустых сообщений


Наверх

Титульная страница Поиск, карта сайта Написать письмо