Memory leak connection
От: sergey22 Россия  
Дата: 23.04.02 10:50
Оценка:
Всем привет!
Работаю с ADO 2.6SP1 и при тестировании приложения на лики обнаружил что
Connection в ADO не освобождает память. Такая же ситуация при работе с Command и
Parameters. И самое неприятное что утечка накапливается. Например, код на создание
Connection и тут же его закрытие показывает утечку в 68kb. При повторном вызове
утечка 105Kb и т.д.

_ConnectionPtr m_spConn = NULL;

_bstr_t bstrConnect("Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=mydb;Data Source = servername; User Id=user;Password=user");

m_spConn.CreateInstance(__uuidof(Connection));
m_spConn->CursorLocation = adUseClient;
m_spConn->ConnectionString = bstrConnect;

m_spConn->Open("","","", adConnectUnspecified);
m_spConn->Close();

m_spConn = NULL;

Подскажите как избавиться от утечек в ADO?
Re: Memory leak connection
От: pg Россия  
Дата: 23.04.02 11:11
Оценка:
Здравствуйте sergey22, Вы писали:

S>Всем привет!


S> Подскажите как избавиться от утечек в ADO?


А где ты видишь эту утечку? Попробуй посмотреть в "Системном мониторе"
Глеб
Re[2]: Memory leak connection
От: sergey22 Россия  
Дата: 23.04.02 11:24
Оценка:
Здравствуйте pg, Вы писали:

pg>Здравствуйте sergey22, Вы писали:


S>>Всем привет!


S>> Подскажите как избавиться от утечек в ADO?


pg>А где ты видишь эту утечку? Попробуй посмотреть в "Системном мониторе"


Использую Rational Purify. Сообщение типа

[I] Summary of all memory leaks... {68424 bytes, 219 blocks}
[I] Summary of all memory leaks... {68424 bytes, 219 blocks}
Connection15::Open(_bstr_t,_bstr_t,_bstr_t,long) [msado15.tli:367]
}

inline HRESULT Connection15::Open ( _bstr_t ConnectionString, _bstr_t UserID, _bstr_t Password, long Options ) {
=> HRESULT _hr = raw_Open(ConnectionString, UserID, Password, Options);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr;
}
Re[3]: Memory leak connection
От: Lexey Россия  
Дата: 24.04.02 06:38
Оценка:
Здравствуйте sergey22, Вы писали:

S>>> Подскажите как избавиться от утечек в ADO?


Ох, слабо мне верится в наличие в ADO2.6SP1 ликов.

pg>>А где ты видишь эту утечку? Попробуй посмотреть в "Системном мониторе"


S>Использую Rational Purify. Сообщение типа


Я бы в первую очередь усомнился в достоверности такого результата. Тот же BC тоже любит иногда выдавать лики там, где их нет и в помине. Очень возможно, что RP неправильно отслеживает пулинг соединений (конекшены-то не уничножаются сразу после релиза, а накапливаются в пуле).
Re: Memory leak connection
От: SuperEm Россия http://www.reddevils.ru
Дата: 10.06.02 11:17
Оценка: -1
Здравствуйте sergey22, Вы писали:

S>Всем привет!

S>Работаю с ADO 2.6SP1 и при тестировании приложения на лики обнаружил что
S>Connection в ADO не освобождает память. Такая же ситуация при работе с Command и
S>Parameters. И самое неприятное что утечка накапливается. Например, код на создание
S>Connection и тут же его закрытие показывает утечку в 68kb. При повторном вызове
S>утечка 105Kb и т.д.

S> _ConnectionPtr m_spConn = NULL;


S> _bstr_t bstrConnect("Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=mydb;Data Source = servername; User Id=user;Password=user");


S> m_spConn.CreateInstance(__uuidof(Connection));

S> m_spConn->CursorLocation = adUseClient;
S> m_spConn->ConnectionString = bstrConnect;
S>
S> m_spConn->Open("","","", adConnectUnspecified);
S> m_spConn->Close();

S> m_spConn = NULL;

S>
S> Подскажите как избавиться от утечек в ADO?


m_spConn->Release();

типа вот так.

релизить надо указатели на объекты.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.