Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

Утечки памяти в TIBQuery :(   Найти похожие ветки 

 
BSD   (2002-11-09 16:59) [0]

Добрый день!
Заношу данные в InterBase базу с помощью IBQuery
SQL:

INSERT INTO RECEIVEDDATA
VALUES (:_CNAME, :_DATETIME, :_COMCODE, :_BUFFER,
:_INTERVAL);

Проблема в том, что происходят утечки памяти (по 12 байт на каждый ExecSQL). Проверял с помощью MemChek.pas

Выдает вот что:

Leak #0 Instance of TStringStream
Size: 12
19 Occurences
call stack - 0 : Routine @Ibquery@TIBQuery@SetParams Find error: 0047CF65
call stack - 1 : Routine @Ibquery@TIBQuery@ExecSQL Find error: 0047CE15
call stack - 2 : Module mythreads.pas Routine @Mythreads@TSaveThread@Execute Line 1276 Find error: 004A43A1
call stack - 3 : Routine @Classes@ThreadProc Find error: 00418CF3
call stack - 4 : Routine @System@ThreadWrapper Find error: 00403D4E
call stack - 5 : (no debug info) Find error: 77E802E9
call stack - 6 : (no debug info) Find error: FFFFFFFC

Вот такая фигня. В чем может быть дело?
Судя по логу не удаляется TStringStream. Есть ли какие нибудь мнения?


 
KDS   (2002-11-09 17:19) [1]

А нука напиши Делфийский код. Т.е. как ты выполняешь эту вставку
программно? Иначе мало информации для анализа проблемы
Какие компоненты доступа к данным IBObject?


 
BSD   (2002-11-09 17:23) [2]

InsertData:TIBQuery;
. . .

InsertData.Close;
InsertData.ParamByName("_CNAME").AsString:=Counters[SR1.Counter].CName;
InsertData.ParamByName("_DATETIME").AsDateTime:=SR1.When;
InsertData.ParamByName("_COMCODE").AsSmallInt:=CommTabs[GetCommandNumber(SR1.Command)].Code;
InsertData.ParamByName("_INTERVAL").AsSmallInt:=SR1.Interval;
InsertData.ParamByName("_BUFFER").AsString:=s1;
InsertData.ExecSQL;



 
KDS   (2002-11-09 17:45) [3]

все правильно, но где транзакции?
Хорошо было-бы подготовку делать и ошибки обрабатывать
а так все правильно
InsertData.Close;
InsertData.Unprepare;
Try

InsertData.ParamByName("_CNAME").AsString:=Counters[SR1.Counter].CName;
InsertData.ParamByName("_DATETIME").AsDateTime:=SR1.When;
InsertData.ParamByName("_COMCODE").AsSmallInt:=CommTabs[GetCommandNumber(SR1.Command)].Code;
InsertData.ParamByName("_INTERVAL").AsSmallInt:=SR1.Interval;
InsertData.ParamByName("_BUFFER").AsString:=s1;
InsertData.Prepare;
InsertData.ExecSQL;
Транзакция.Commit;
except
Транзакция.Rollback
end;



 
KDS   (2002-11-09 17:50) [4]

Дело скорее всего не в этом участке кода. Все иду домой


 
BSD   (2002-11-09 17:51) [5]

Все делаю точно так, только вместо Commit - CommitRetaining,
может из-за этого?


 
BSD   (2002-11-09 17:55) [6]

Поставил Commit - те же проблемы!
Незнаю даже что делать. Вроде бы всего 12 байт, а за двое суток прога 20 мег проср@ла :(


 
BSD   (2002-11-09 18:26) [7]

Посмотрите файл IBSQL.PAS строка 1033:

if (FXSQLVAR^.sqltype and (not 1) = SQL_BLOB) then
LoadFromStream(TStringStream.Create(Value))

StringStream создали, а его удаления нигде нет.
Мастера это что ошибка в VCL или просто я глючю?


 
Romkin   (2002-11-10 10:49) [8]

Поставь обновление IBX, на родном работаешь?
www.ibase.ru


 
Max Zyuzin   (2002-11-10 10:53) [9]

Все это весьма странно. У меня прога тоже рабоатет с базами целыми неделями без перезапусков и столько никогда не набирает! Может все дело вовсе не в InterBase? Посмотри свой код внимательно может что где объявляешь и забываешь удалять?


 
BSD   (2002-11-11 14:50) [10]

> Romkin

А что именно ставить, я чото не нашел?


 
Dr_Mike   (2002-11-20 21:12) [11]

Проблема как раз в сервере Interbase и CommitRetaining - насколько я помню потери памяти при КоммитРитэйнинг - это неисправимый баг версии 6.0.1 (или какой-то такой) -
Так что обнови Интербейс!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.015 c
4-28340
Igor_thief
2002-10-19 18:18
2002.12.09
Menu


7-28325
Tony'c
2002-09-28 19:59
2002.12.09
Как программно включить удалённый компутер


3-27887
Mic_2000
2002-11-21 11:12
2002.12.09
Немогу разобраться с Lookup полями в DBGridEh из EhLib


4-28356
Бульбаш
2002-10-28 17:42
2002.12.09
Подскажите плиз в каком модуле RXLib находится функция


14-28239
SPeller
2002-11-16 13:23
2002.12.09
О форуме... по WinApi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский