|
|
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
Открываю формы самым правильным способом Код: plaintext 1. 2. 3. 4. 5. размер проги в памяти потихоньку растет, однако после закрытия почти не уменьшается. Чем больше на ней контролов, тем ситуация хуже. Ситуация еще хуже, когда контролы самописные и находятся в отдельном ocx. А когда они добавляются на форму динамически - вообще жопа. Форму можно открыть раз семь, после этого с трудом вылазит ошибка Out of memory. Причем она происходит внутри одного из самописных контролов при изменении какого-нибудь свойства. Контролы не содержат объектных переменных, чисто графика - кнопки, чекбоксы, фреймы, дропдауны. ЧТО ДЕЛАТЬ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 13:42:00 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
Windows 98? Как происходит выгрузка контролов? Коллекции очищаются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 15:08:48 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
1. w2k/xp и, думаю, везде 2. Пробовал и в покое оставлять и ручками Unload им делать - монописуально. 3. Коллекций нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 17:11:24 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
была похожая история с ocx-ом у которого внутри был webbrowser чем больше открывал окон с таким ocx-ом , тем больше жралась память и не выгружалась. лечил с помощью отдельного метода UnloadMe (или как угодно назови) в самом ocx-е, где принудительно обнулял все переменные , связанные с браузером и делал в конце загрузку ему about:blank . вызов этого метода вставлял в терминэйт контрола и еще в метод queryunload формы, в котором он сидел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 17:31:06 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
кстати, ты проверял только на своем рабочем компе или еще где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 17:32:47 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
Попробуй set f=nothing (обнуление памяти, занимаемой под формой.) Но желательно форму кэтому времени выгрузить, но я пишу последним делом в Unload ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 17:37:44 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
авторPrivate Sub Command1_Click() Dim f As Form Set f = New frmTest f.Show Set f = Nothing End Sub Этот метод правильный если форма модальная ... иначе она тут же должна выгрузиться (или я не прав?) Динамически добавляя компоненты, не забываем их динамически удалять? Как обстоят дела со стандартными контролами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 17:51:57 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
Aklin(обнуление памяти, занимаемой под формой.) Это НЕ "обнуление памяти". Это декремент указателя на переменную класса. Форма выгрузится, когда все переменные, ссылающиеся на нее, станут Nothing. В частности, если UseControl-ы, находящиеся на форме, хранят в себе ссылку на эту же самую форму, то... может произойти все, что угодно при Set f = Nothing. От контролов зависит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2005, 17:55:37 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
В одном вопросе разобрался, возник новый =/ Хотя, ошибки о нехватке памяти возникали в осх, причина не он, а пара юзерконтролов в самом экзешнике. Один из них содержит два других и на форме он является массивом. Они-то как раз содержат штук по пять объектных переменных, которые очищаются в UserControl_Terminate. Беда в том, что UserControl_Terminate срабатывает только после закрытия программы, а не формы. Причем в форме массиву делается принудительный анлоад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 10:38:40 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
AntonariyБеда в том, что UserControl_Terminate срабатывает только после закрытия программы, а не формы. Да, да, и UsecControl_Initialize без параметров ;-P Тоже натыкался на эти грабли. А так надеялся что не придется писать эти дурацкие самописные SetInitialized и SetTerminated ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 11:30:49 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
(плачу в жылетку...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 11:35:06 |
|
||
|
Старая песня о главном (memory leak)
|
|||
|---|---|---|---|
|
#18+
Кажется это имеет отношение к проблеме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2005, 13:09:27 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=33145020&tid=2167534]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
54ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 312ms |

| 0 / 0 |
