утечка памяти и MySQL

  • Автор темы Автор темы Martin
  • Дата начала Дата начала

Martin

Новичок
утечка памяти и MySQL

всем добрый.
столкнулся с проблемой, решение никак не могу найти.
проблема связана с утечкой память при подключении к БД mysql.
обращаюсь к БД по таймауту, ч\з ф-цию OnTimer(), которая запускается ч\з каждые 2 сек. подключаюсь к БД и проверую не были сделаны изменения, этот режим работы программы называется автоматич. режим.
вот так программа может работать целые суть, врезультате после работы одник сутки утечка памяти составила 650 Мбайт.

не подскажите как можно обращаясь к БД избежать утечки памяти ?
 
С чего ты решил что это утечка?
очевидно он продебажил, или, Martin это не так?
на основании того, что растет память работающего приложения нельзя утверждать , что в нем есть утечка.

Утечка памяти, это когда приложение закончило свою работу и не вернуло ядру высовбожденную память, т.е. ядро после работы программы стало располагать меньшей памятью, чем до начало работы приложения.
 
Автор оригинала: Alexandre
очевидно он продебажил, или, Martin это не так?
на основании того, что растет память работающего приложения нельзя утверждать , что в нем есть утечка.

Утечка памяти, это когда приложение закончило свою работу и не вернуло ядру высовбожденную память, т.е. ядро после работы программы стало располагать меньшей памятью, чем до начало работы приложения.
утечку памяти обнаружил ч\з таскменеджер.
если коментирую часть кода ответствен. за частое подключение к БД, т.е. OnTimer() утечка в моей программе клиент перестает наблюдаться.
если отключай режим работа клиента из автоматич. режима утечка памяти перестает наблюдаться.
 
покажи код хоть, скорее всего, ты ее сам не возвращаешь.
hint: подключатся надо не каждый раз при событии онТаймер,
а один раз при переходи в автоматический режим.
 
при каждом коннекте резервируется память для расположения структур коннекта и ответа. Для освобождения этой памяти необходимо вызывать mysql_free() или mysql_close() (не будем привязыываться к конкретному языку).

если теряется коннект, и ты снова (по таймеру) вызываешь mysql_open() то вновь запрашиваешь ядро на выделение необходимой памяти, не вернув ему старые блоки памяти.

не знаю как в винде, но в никсах клиентская либа мускуля утечек не имеет (проверенно - мин нет).
 
всем спасибо.
проблема решилась.
все ваши комментарии приму к сведению. :)
 
Сверху