Форум: "Базы";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
ВнизTOracleDataSet из DOA жрет память и не отдает. Как исправить ? Найти похожие ветки
← →
maxi (2002-06-29 14:44) [0]Привет мастера....
У меня прога почему то жрала память, безвозвратно.
Стал разбиратьться - нашел - у меня в таймере стоит примерно
следующее :
...
OracleDataSet1.Close;
OracleDataSet1.Open;
...
Каждую секунду я получаю данные в курсор. Вроде бы делаю Close, но память всеравно кушается. Пробовал делать так:
...
OracleDataSet1.Open;
... - делаю тута что нужно
OracleDataSet1.Close;
...
Все равно ни вкакую - память тает на глазах. Если делать запрос к базе каждую секунду, то сжор памяти составляет 100 кБайт в минуту !!!!!!!!! Если сделать таймер пореже раза в 2 - память
жраться будет реже, тоже раза в 2 (проверял).
Может я что-то забыл сделать ? Может как-то надо старые данные не просто через Сlose уничтожать ? или еще чего ?
Подскажите, пожалуйста ....
← →
kaif (2002-06-29 15:15) [1]Вряд ли в компоненте такая явная ошибка. Проверь, может Oracle память жрет... (если он на той же машине стоит). Может, он порождает каждый раз новый курсор (до конца транзакции). Поиграй с транзакцией... Но это все предположения.
← →
maxi (2002-06-29 15:49) [2]А куда девается старый курсор, если я делаю Close?
И как освобождается место из под старого курсора ?
Никто не знает ?
← →
maxi (2002-06-29 17:17) [3]Ура !!! Удалось стабилизировать пожирание памяти.
Все дело в том, что если делать вот так :
OracleDataSet1.ClosеAll;
OracleDataSet1.Open;
То всё становится нормально. Почему-то ... :о)
Как говорится если работает - не лезь... :о)
Хотя всё равно непонятно - даже если у меня два раза выполнялась бы строка OracleDataSet1.Open недолжно было бы происходить никакого перераспределения ресурсов. Но всё же, CloseAll наверно правильней использовать - наверняка эта процедура подчищает память за набором данных ....
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c