Форум: "Базы";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
ВнизРастет память, блин....ADO+Access Найти похожие ветки
← →
Raduga (2003-10-29 10:52) [0]Записываю в mdb-файл данные посредством sql( insert ....).
Данные записываются автоматически по таймеру. И заметил, что размер моей проги в памяти постоянно увеличивается. Как с этим бороться. Использую ADO (Jet 4.0).
← →
Sandman25 (2003-10-29 11:17) [1]Данный потом считываются в какой-то Dataset?
← →
Raduga (2003-10-29 11:22) [2]Потом считываются.
Но память растет и до считывания.
← →
Плохиш_ (2003-10-29 11:22) [3]>Raduga (29.10.03 10:52)
Т.е. сидишь, смотришь на часы и периодически говоришь "INSERT", правильно я понял?
Если "да", причём тут компьютеры, в противном случае ошибка в 17й строке
← →
Sandman25 (2003-10-29 11:25) [4]Query один, я надеюсь, и с параметрами?
Тогда непонятно.
← →
sniknik (2003-10-29 11:26) [5]а ADOConnection используеш, или строку у query прописываеш? просто без явного указания коннекта он в фоне создается а дальше на усмотрение ADO освобождается когда ему удобно будет (и с условием что его больше ничего не держит).
вообше это не обязательно глюк, даже после уничтожения обьекта ADO может "придерживать" память на всякий случай, а вдруг интенсивная работа и опять создавать его будут, так скорость обеспечивают.
← →
Raduga (2003-10-29 11:29) [6]>Плохиш_ (29.10.03 11:22) [3]
Нет не правильно.
Слово автоматически тебе о чем- нибудь говорит?
Если "да" то не задавай таких вопросов, в противном случае поясняю: программа работает без участия человека и сохраняет в базу данные через определенный интервал времени.
← →
Raduga (2003-10-29 11:34) [7]>sniknik © (29.10.03 11:26) [5]
ADOConnection.
← →
Плохиш_ (2003-10-29 11:38) [8]>Raduga (29.10.03 11:29) [6]
читай до конца Плохиш_ (29.10.03 11:22) [3]
← →
Raduga (2003-10-29 11:43) [9]>Плохиш_ (29.10.03 11:38) [8]
Что за 17 строка?
← →
Raduga (2003-10-29 13:10) [10]Никто не знает причину, да?
← →
Vlad (2003-10-29 13:19) [11]
> Raduga (29.10.03 13:10) [10]
> Никто не знает причину, да?
Как же ее узнать, если ты толком не объяснил как происходит сие действие.
PS 17-я строка означает - "приведи код" :)))
← →
Raduga (2003-10-29 13:30) [12]>Vlad © (29.10.03 13:19) [11]
спасибо за объяснение насчет 17 строки :).
Я вот не знал (сделайте хоть специальный раздел, где расшифровываются различные сокрашения - типа словарь спец символов и сокращений :)).
А код такой:
form1.Timer1Timer(Sender: TObject);
var comstr:string;
RecordAffected:integer;
begin
comstr:="insert into AlarmEvents (AEchanelGaugeID,AEDataTimeValue,AELevelValue)";
comstr:=comstr+"VALUES ("1","+floattostr(now)+","+inttostr(val)+")";
dm.ADOConnection1.Execute(comstr,RecordAffected,[eoExecuteNoRecords]);
end;
val -некоторое вычисляемое значение
← →
sniknik (2003-10-29 14:32) [13]а с чего ты взял что это ADO виновато? ведь это размер твоей проги растет (тока обратил внимание), а не память используемая системой и ADO в частности.
в приведенном коде ничего криминального нет (кроме что именно так не скомпилится изза "1 " и будет ошибку запроса давать изза floattostr(now) (нужно разделитель дробной части менять)).
а так все зашибись (память теряется не в 17 а в 27 строке ;о))
http://podgoretsky.com/ftp/Language/nps/idioms.html
← →
Raduga (2003-10-29 14:34) [14]Может Jet не напрямую пишет в таблицу, а сначала в кэш, а потом как он заполнится скидывает в таблицу? Хотя сразу после запуска моей проги, открываю Аксесом файл, куда пишется, то там уже есть новые значения.
← →
Raduga (2003-10-29 14:41) [15]>sniknik © (29.10.03 14:32) [13]
>ошибку запроса давать изза floattostr(now)
Не дает.
>ведь это размер твоей проги растет
Вот именно моей проги. А моя прога не занимает памяти, чтоли?
А в проге только в таймере что-то и происходит (в данном случае запись в базу). Просто если размер моей проги будет постоянно расти, то в один прекрасный момент вылезет сообщение о недостатке памяти и т.д...
← →
sniknik (2003-10-29 15:09) [16]>>ошибку запроса давать изза floattostr(now)
>Не дает.
а разделитель целой и дробной части в системе что стоит? может тебе повезло и стоит точка но прикинь что будет на другой машине где запятая? простопроанализируй получившийся запрос.
>>ведь это размер твоей проги растет
>Вот именно моей проги. А моя прога не занимает памяти, чтоли?
ADO это COM обьект которым ты управляеш, размер твоей проги от него не зависит (если только он данные тебе не передал.. т.д.), поэтому дели общую память системы и твоей проги.
> Просто если размер моей проги будет постоянно расти, ...
не должен, не от этого куска программы во всяком случае.
может конечно у тебя какието старые компоненты/дельфи/jet поставь последние/апдейты на всякий случай.
и кстати легко проверить, сделай так
// dm.ADOConnection1.Execute(comstr,RecordAffected,[eoExecuteNoRecords]);
не меняя остальной код и проверь, растет размер?
← →
Raduga (2003-10-29 15:16) [17]>sniknik © (29.10.03 15:09) [16]
>// dm.ADOConnection1.Execute(comstr,RecordAffected,[eoExecuteNoRecords]);
не меняя остальной код и проверь, растет размер?
Уже делал. Если комментирую данную строку, то размер не растет...
← →
sniknik (2003-10-29 15:34) [18]если делал то почему не написал об этом?
а также о версиях, и системе. вообше ты заметил сколько памяти занимает твоя прога и ее размер на диске? видел разницу, память под нее система выделяет ровно столько сколько нужно. (исключение для запакованых программ)
и как растет? время, динамика роста, совсем не понижается? информацию вытягивать нужно?
это никому кроме тебя не нужно, так что постарайся, опиши подробнее. (у меня к примеру все ok с памятью и ее ростом)
← →
Raduga (2003-10-29 16:06) [19]Delphi 5 (без Update), XP, Jet 4.0 (тоже без SP).
На диске метр, в памяти 9 с хвостиком.
Динамика роста положительная :). В среднем 4 кб в 5-6 сек. Занимаемая память не падает. (Сегодня на ночь оставлю- тестить).
Рост занимаемой памяти отображается в диспетчере задач.
← →
Raduga (2003-10-30 07:35) [20]Оставлял на ночь прогу работать...
Размер увеличился до 28 метров.
← →
sniknik (2003-10-30 10:41) [21]не знаю, сделал то же (только ложит и ничего больше, как ты написал, но без расчетов, естественно), размер 7080-6900-6884 по разному, растет только стачала дальше пляшет вокруг установившегося размера. на ночь не оставлял :о) но около полчаса оно работало.
система w2k sp4, Jet 4 sp7, delphi 7 (апдейты только на хелпы по IB, думаю не влияет ;о)).
в обшем хочеш пришлю скомпиленную узнаеш что виновато дельфи или система. (если у тебя скомпиленное на 7 дельфи будет вести себя по другому...)
а еше почитай что пишут (и подобное часто) про ADO в d5.
http://delphimaster.net/view/3-1067433093/
← →
bushmen (2003-10-30 10:54) [22]>Raduga
Ты сначала скачай с сайта Borland update"s и посмотри результат.
← →
Raduga (2003-10-30 11:29) [23]Да уж... апдейт на 25 метров тянет.
Начальник меня повесит :)
схожу лучше в магазин и компашку с Делфями 6(7) куплю, давно собирался на них переходить , да к 5 как то привык.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.012 c