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

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

TOracleDataSet ;из DOA ;жрет память и не отдает. Как исправить ? [D5, Oracle]


maxi ©   (2002-06-29 14:44:00) 

Привет мастера....
У меня прога почему то жрала память, безвозвратно.
Стал разбиратьться - нашел - у меня в таймере стоит примерно
следующее :

...
OracleDataSet1.Close;
OracleDataSet1.Open;
...

Каждую секунду я получаю данные в курсор. Вроде бы делаю Close, но память всеравно кушается. Пробовал делать так:
...
OracleDataSet1.Open;
... - делаю тута что нужно
OracleDataSet1.Close;
...

Все равно ни вкакую - память тает на глазах. Если делать запрос к базе каждую секунду, то сжор памяти составляет 100 кБайт в минуту !!!!!!!!! Если сделать таймер пореже раза в 2 - память
жраться будет реже, тоже раза в 2 (проверял).
Может я что-то забыл сделать ? Может как-то надо старые данные не просто через Сlose уничтожать ? или еще чего ?
Подскажите, пожалуйста ....


maxi   (2002-06-29 17:17:00) [1]

Ура !!! Удалось стабилизировать пожирание памяти.
Все дело в том, что если делать вот так :

OracleDataSet1.ClosеAll;
OracleDataSet1.Open;

То всё становится нормально. Почему-то ... :о)
Как говорится если работает - не лезь... :о)
Хотя всё равно непонятно - даже если у меня два раза выполнялась бы строка OracleDataSet1.Open недолжно было бы происходить никакого перераспределения ресурсов. Но всё же, CloseAll наверно правильней использовать - наверняка эта процедура подчищает память за набором данных ....


maxi   (2002-06-29 15:49:00) [2]

А куда девается старый курсор, если я делаю Close?
И как освобождается место из под старого курсора ?
Никто не знает ?


kaif   (2002-06-29 15:15:00) [3]

Вряд ли в компоненте такая явная ошибка. Проверь, может Oracle память жрет... (если он на той же машине стоит). Может, он порождает каждый раз новый курсор (до конца транзакции). Поиграй с транзакцией... Но это все предположения.


Наверх

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