Программа растет в памяти во время работы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Программа растет в памяти во время работы

Сообщение moshkin » 15.07.2005 (Пт) 6:58

Запускаю программу из VB (то есть не компилировал в exe). Сразу после запуска смотрю в диспетчере задач - 25 Мб. Во время работы программа растет в памяти - этак по 100-200 Кб. За 100-150 циклов внутри программы она становится более 40Мб. Ну и потом идут глюки.
Глюки выражаются в том что то что работало не работает и еще - если остановить программу, не закрывать сам VB и тут же снова запустить программу то чаще всего появляется сообщение "недостаточно системных ресурсов". Если закрыть VB и тут же снова открыть и запустить программу то все работает замечательно.
Вроде как где то я память не очищаю.
Где искать ошибку?
Я думаю что это запросы. Соединение с базой одно (один файл mdb) устанавливается при запуске. А вот как очищать или закрывать рекордсеты чтоб очистить память?
Массивов нет. Переменные глобальные вроде не должны мешать. Переменные уровня модуля наверное тоже. А вот если в процедуре описана переменная Dim a as integer, ее надо как-то очищать?
Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.07.2005 (Пт) 8:19

Проще всего было бы выложить исходники сюда.

А так -- рекордсеты закрываются rs.Close : Set rs = Nothing, а при завершении работы программы надо указывать db.Close : Set db = Nothing
Lasciate ogni speranza, voi ch'entrate.

moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Сообщение moshkin » 15.07.2005 (Пт) 8:27

Спасибо. Пробую-разбираюсь. А исходники не стал выклладывать, там что-то уж очень много всего.

moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Сообщение moshkin » 15.07.2005 (Пт) 10:54

2 alibek:
Ну, короче, ничего не помогает. Пока все равно растет в памяти.
Килобайт так по 200 за раз. :(
я целиком проект выложу - может посмотрите?
Только он скорее всего не запуститься - ему для работы нужен голосовой модем.
Последний раз редактировалось moshkin 19.07.2005 (Вт) 10:01, всего редактировалось 1 раз.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.07.2005 (Пт) 11:05

moshkin писал(а):2 alibek:
Ну, короче, ничего не помогает. Пока все равно растет в памяти.
Килобайт так по 200 за раз. :(
я целиком проект выложу - может посмотрите?
Только он скорее всего не запуститься - ему для работы нужен голосовой модем.


Попробуй удаляя/комментируя отдельные куски программы самостоятельно выловить пожирающую память часть. В былые времена у меня отъедало память CDO - похоже он по жизни такой (где-то по несколько килобайт при простом создании/уничтожении объекта)...

У тебя поеданием памяти занимается, скорей всего, какой-то из твоих объектов...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Сообщение moshkin » 15.07.2005 (Пт) 11:48

Проблема в том что это автоинформатор и он уже работает. То есть он уже звонит конкретным людям и проигрывает сообщения.
Поэтому что-то выкусить пока проблематично, но буду пробовать. Кстати, что такое CDO ? Пока грешу на вот этот компонент Voiceangel. Потому что уж очень большие приросты. Это или запросы, но им делаю и close и nothing. Или это сам компонент. А еще мыслю надо попробовать по шагам запустить, и смотреть когда она растет - в какой момент.
В общем пока полные непонятки.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.07.2005 (Пт) 11:55

moshkin писал(а):Поэтому что-то выкусить пока проблематично, но буду пробовать. Кстати, что такое CDO ?


Ну... Грубо говоря это к почте относится... DLL-ка такая...

moshkin писал(а):Пока грешу на вот этот компонент Voiceangel. Потому что уж очень большие приросты. Это или запросы, но им делаю и close и nothing.


В случае с CDO это (close/nothing) мне тогда не помогало.
Только или не закрывать сессию или периодически перезапускать программу. Я тогда остановился на перезапуске - задача это вполне позволяла.

moshkin писал(а):Или это сам компонент. А еще мыслю надо попробовать по шагам запустить, и смотреть когда она растет - в какой момент. В общем пока полные непонятки.


В общем ищи сам - тут вряд ли дистанционно помогут - если сложно прогу на своем компьютере запустить...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

moshkin
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 03.12.2002 (Вт) 15:01
Откуда: Russia

Сообщение moshkin » 15.07.2005 (Пт) 12:12

Да, перезапуск и у меня возможен, но ведь не красиво как-то. Опять-таки лишние телодвижения. Это надо будет как-то чтобы она сама себя время от времени останавливала и тут же сама запускала. Можно конечно, но пока еще есть терпение поковыряться.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

    TopList  
cron