![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обрезание хвостов.
Лана Розанова © (2002-04-16 12:21:00)Всем привет.
Проблема состоит в следующем:
При циклическом опросе с интервалом в 1 сек. за единицу времени происходит вызов базы данных, дополнение ее новой строкой и ее закрытие. На следующем шаге происходит вызов другой БД и так N-раз. Так вот. Программа потихоньку набирает вес в памяти, а это недопустимо из-за ее круглосуточной работы.
Может кто поможет справиться с этим?
СПАСИБО!!!
Лана Розанова (2002-04-20 20:19:00) [1]Сделала одну БД в которую записывается раз в секунду данные, и которая постоянно открыта. Все равно размеры программы в памяти увеличиваются.
Толик (2002-04-18 13:40:00) [2]to Лана Розанова ©:
1. Если используется компонент TTable, то BDE используется всегда (конечно если TTable - компонент от Borland).
2. "...При циклическом опросе с интервалом в 1 сек. за единицу времени происходит вызов базы данных..." - это каждую секунду открывается и закрывается база??? Если это так, то проблема скорее всего здесь. Дело в том, что открытие и закрытие БД - процесс довольно долгий для одной секунды, м.б. здесь и происходит утечка ресурсов (открыли, закрыть не успели, а открываем снова), IMHO. М.б. имеет смысл базу держать открытой постоянно, а по мере надобности туда всё записывать?
Елена (2002-04-18 13:03:00) [3]Я, конечно, могу ошибаться, но если используется Table, который унаследован от TBDEDataSet, то и BDE используется.
Лана Розанова (2002-04-18 12:14:00) [4];
Лана Розанова (2002-04-18 12:11:00) [5]Anatoly Podgoretsky
Пробовала, но все равно идет накопление. Может проблема в самой WinNT?
Anatoly Podgoretsky (2002-04-17 14:12:00) [6]В дополнение к ответу gek цифры это минимальный и максиальный размере кеша в килобайтах, и чем больще памяти на компьютере, тем хуже себя ведет кеш, увеличивать размер не рекомендую
gek (2002-04-17 10:36:00) [7]Ну Anatoly Podgoretsky правильно написал
А все это дело ставить в с:\windows\system.ini
По умолчанию там пустой блок [vcache]
REA (2002-04-17 10:30:00) [8]Уверены, что не используете BDE? Файл-то вроде db (Paradox)
Лана Розанова (2002-04-16 16:33:00) [9]Anatoly Podgoretsky
[vcache]
MinFileCache=16384
MaxFileCache=16384
Объясните пожалуйста, где это написать?
Anatoly Podgoretsky (2002-04-16 15:26:00) [10]В твоем коде нет ничего криминальногоЮ только вот вместо
Table1.Last;
Table1.Insert;
Лучше
Table1.Append;
Возможно проблема действительно в дисковом кеше, это характерно для Win9x, но с ним можно бороться так
[vcache]
MinFileCache=16384
MaxFileCache=16384
Лана Розанова (2002-04-16 14:53:00) [11]REA
Где это такое - MaxFileCache в System.ini?
И где поставить в BDE поставить LocalShare = True если я не использую BDE?
Может вопросы некорректны, но я что-то не понимаю.
Лана Розанова (2002-04-16 14:47:00) [12]Anatoly Podgoretsky
Table1.DatabaseName:=MyPath+"DBChartDan\"+dates;
Table1.TableName:=dates+"("+inttostr(i1)+").db";
Table1.Active:=true;
FormatDateTime(LongTimeFormat,Now);
Table1.Last;
Table1.Insert;
Table1Time.Value:=timetostr(time);
Table1Referense.Value:=ParMot[1];
Table1FeedBack.Value:=ParMot[2];
Table1Freq.Value:=ParMot[3];
Table1Curr.Value:=ParMot[4];
Table1PowerW.Value:=ParMot[5];
Table1PowerHP.Value:=ParMot[6];
Table1VoltM.Value:=ParMot[7];
Table1VoltDC.Value:=ParMot[8];
Table1TempM.Value:=ParMot[9];
Table1TempVLT.Value:=ParMot[10];
Table1PulseRef.Value:=ParMot[11];
Table1TempRad.Value:=ParMot[12];
Table1.Post;
Table1.Close;
REA (2002-04-16 13:25:00) [13]Урежь файловый кэш: MaxFileCache в System.ini
по-умолчанию такой настройки нет и виндовс жрет память.
и базу закрывать кстати не обязательно, если в BDE поставить LocalShare = True
Anatoly Podgoretsky (2002-04-16 12:23:00) [14]Приведи код