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