Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.016 c
1-19520
Andrey Terekhov
2003-03-26 14:25
2003.04.07
Как показать прогресс копирования или скачки файла


1-19586
Tornado
2003-03-28 15:14
2003.04.07
работа с директориями


3-19502
yuniki
2003-03-19 12:51
2003.04.07
Как конвертировать таблицу из одной кодировки в другую


14-19815
Supreme 2
2003-03-19 00:39
2003.04.07
Зачем нужна война с Ираком?


14-19803
NetBreaker666
2003-03-19 19:11
2003.04.07
Слабо ? В. Цой.




   Наверх