|
|
|
Извините за вопрос не по теме (соседний форум по VB не пользуется популярностью)
|
|||
|---|---|---|---|
|
#18+
СИТУАЦИЯ: Запускается откомпилированное на VB6 приложение. Диспетчер задач/Процессы/Память - 10112КВ. (Win2k) В preferens подключены библиотеки: стандартные VB, MSADO и MS Exel 8.0 Имеется две формы. На одной лежат элементы MS DataGrid,MS Windows Common controls 6.0 и MS Windows Common controls 6.0-2. На другой ничего нет кроме нескольких текстовых полей. Еще есть 5 модулей, в которых функции. Во второй используется одна DLL для сворачивания формы в systray. На первой настраивается приложение и она загружается из систрея, а потом закрывается. Рабочие процедуры находятся в модулях и форма,которая висит в систрее запускает их. В процедурах и функциях модулей создаются объектные переменные, но после отработки процедуры я их удаляю из памяти. Тоже самое и для первой формы (Unload перфой формы а не Hide, т.е. память, которую пользуют осх-ы тоже должна освобождается. Если я правильно понимаю, MSADO и MS Exel 8.0 библиетеки при создании объектов, ссылающихся на них, загружаются в память, а при удалении этих объектов библиотеки выгружаются (да и вообще в диспетчере задач для них можно увидеть отдельные процессы, поэтому память, которую они используют не входят 10МБ). На форме, которая свернута в систрей, имеется таймер, по которому срабатывают процедуры и функции из модулей. Так вот, во время простоя приложение занимает 6МБ, во время запуска процедур и функций из модулей 7-8МБ, а при загрузке первой формы 9-10МБ. При чем при выгрузке формы занимаемая память уменьшается обратно до 7-8МБ, а после отработки процедур и функций до 6МБ. Кроме того, пока приложение запущено, занимаемая память не увеличивается (только изменяется в пределах 6-10МБ) Все это я привожу для того, чтобы у вас не возникало подозрений, что память, выделяемая под создаваемые объекты, потом не правильно освобождается. ВОПРОС: Неужели, стандартные библеотеки VB + одна WinApiDll (для систрея) + 5 небольших модулей могут занимать в памяти 6МБ? Если да, то как можно управлять этим процессом? Если нет, то какой ваще прикол в VB, кроме приставки Visual? P.S.: Еще в модулях используется несколько public переменных, которые висят в памяти до выгрузки второй формы. P.P.S.: Люди говорят, что, типа у сервера ресурсов много, и 10МБ это фигня. Возникает еще один вопрос: умные ли эти люди? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2002, 21:11:20 |
|
||
|
Извините за вопрос не по теме (соседний форум по VB не пользуется популярностью)
|
|||
|---|---|---|---|
|
#18+
Вопрос действительно не по теме - но дам ответ: - нельзя оценивать используемые обьемы физической памяти приложений через диспетчер задач - не за чем следить за памятью, используемой VB, так как в нем отсутствует возможность работы с указателями, а наличие сборщика мусора гарантирует своевременное высвобождение используемых обьектов (кроме конечно циклических ссылок) - даже по диспетчеру задач и списку используемых вами обьектов можно сказать, что обьем, занимаемый VB вполне божеский и лишнего он не ест. Почему обьяснять не буду, иначе придется пройтись по многим спецификами ОС, COM и VB. И совет - чем больше вы будете не доверять инструменту на котором пишете, тем дольше и хуже вы на нем будете работать, пытаясь в своей программе обходить не существующие ошибки. Извините - но не будьте параноиком, пишите программы, а насущные глюки того же VB вылезут сами собой, вот тогда уже по делу и будете думать, как их обходить. Уверяю вас - глюклов в нем предостаточно, интересной работы хватит надолго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2002, 08:46:56 |
|
||
|
Извините за вопрос не по теме (соседний форум по VB не пользуется популярностью)
|
|||
|---|---|---|---|
|
#18+
4 ASCRUS > - не за чем следить за памятью, используемой VB, так как в нем отсутствует возможность работы с указателями не знаю как с указателями на переменные, но с указателями на функции есть встроенная в VB6 возможность работы > а наличие сборщика мусора .............. а что такое сборщик мусора? И вообще, все это с пожиранием памяти так было задумано в VB или я просто, что-то не так делаю? Да, кстати, паранойя здесь совсем не причем, просто раньше на VB писал программы для себя, ну там дипломы всякие и т.д. и как то было пофигу скока он жрет памяти, но сейчас, когда написано приложение-клиент, полностью отлаженное и работоспособное (по крайней мере глюков пока замечено не было), которое работает в реальных условиях (а не как дипломная работа) с SQL Server, появилась эта проблема с памятью. Это мое упущение, потому что, как я и говорил, никогда не обращал внимания сколько памяти жрет VB (к примеру, если запустить exe-шник, откомпилированного проекта, в котором есть весго лишь одна пустая форма и больше ничего, то в диспетчере можно увидеть, что он разом жрет более 2МБ). Не ужели все на VC переписывать? Да и еще вопрос: что же показывается в Диспетчер задач/Процессы/Память, если не физическая память, занимаемая приложением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2002, 12:49:22 |
|
||
|
Извините за вопрос не по теме (соседний форум по VB не пользуется популярностью)
|
|||
|---|---|---|---|
|
#18+
Если воспользоваться утилитой System Information (из Norton Utilities), закладка - Память, то можно увидеть, что половина памяти, отъедаемой программой на VB, это разделяемые модули, такие как MSVCRT.DLL, OLEAUT32.DLL и другие. Так что реальный размер памяти, занимаемой самой прогой и ее ДЛЛ, значительно меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2002, 01:02:14 |
|
||
|
Извините за вопрос не по теме (соседний форум по VB не пользуется популярностью)
|
|||
|---|---|---|---|
|
#18+
По поводу сборщика мусора: в VB6 работает он неоднозначно и на системах, которые криво работают с памятью(Win95/9 выделенная память может и не удалиться. Сам сталкивался с этой проблемой, так как после закрытия приложения объем свободной памяти уменьшался на 15-20 мб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2002, 09:06:44 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32031321&tid=1822526]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 495ms |

| 0 / 0 |
