Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

утечка памяти в TextBox ?

2.2K
20 января 2004 года
VBuser
25 / / 05.09.2003
Собственно вопрос, если в TextBox постоянно добавлять записи, то через Диспетчер задач видно, что растет память, которую использует данное приложение, если сделать что то типа Text1.text = "" то, циферки памяти остануться на прежнем уровне, то есть если у меня приложение будет сутками висеть с пополняющимися записями, то когда-нибудь ресурсы исчерпаются,

вопрос, а как освобождать память в таком случае ? (проверил, и в ListBox таже х..я)
258
20 января 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by VBuser
Собственно вопрос, если в TextBox постоянно добавлять записи, то через Диспетчер задач видно, что растет память, которую использует данное приложение, если сделать что то типа Text1.text = "" то, циферки памяти остануться на прежнем уровне, то есть если у меня приложение будет сутками висеть с пополняющимися записями, то когда-нибудь ресурсы исчерпаются,

вопрос, а как освобождать память в таком случае ? (проверил, и в ListBox таже х..я)



Что есть такое - "в TextBox постоянно добавлять записи"? в смысле присваивать каждый раз новое значение? если такое наблюдается, то это или ошибка в самом компоненте или так и должна работать программа в виндах, то бишь то что показывает диспетчер, это еще не показатель того, что эту память жрет сам TextBox или сама программа, может винды зачем сами хранят эти значения или не хочет пока очищать. Например, станд. TextBox поддерживает отмену введенного текста Ctrl-z (даже системное сообщение в виндах есть для этого)

2.2K
20 января 2004 года
VBuser
25 / / 05.09.2003
[QUOTE]Originally posted by SergeySV


Что есть такое - "в TextBox постоянно добавлять записи"? в смысле присваивать каждый раз новое значение?

НУ добавлять можно например так:
Text1.SelStart = Len(Text1)
'Text1.SelText = vbNewLine & "blablabla"
266
20 января 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by VBuser
[QUOTE]Originally posted by SergeySV


Что есть такое - "в TextBox постоянно добавлять записи"? в смысле присваивать каждый раз новое значение?

НУ добавлять можно например так:
Text1.SelStart = Len(Text1)
'Text1.SelText = vbNewLine & "blablabla"


Попробуй Text1.Text = VbNullString (как ни странно, иногда такие глюки помогает обойти). К тому же, что у тебя "жрёт" память? *.exe, или VB - проект? Вполне возможно, что в экзюшнике такого не будет наблюдаться.
К тому же. попробуй поздним связыванием динамически подгружать этот текстбокс, а по окончании его использования, или вместо очистки просто "грохать" и перезагружать.
На крайняк, попробуй поставить сервис-паки для VStudio;)

2.2K
20 января 2004 года
VBuser
25 / / 05.09.2003
Цитата:
Originally posted by mhaturov

Попробуй Text1.Text = VbNullString (как ни странно, иногда такие глюки помогает обойти). К тому же, что у тебя "жрёт" память? *.exe, или VB - проект? Вполне возможно, что в экзюшнике такого не будет наблюдаться.
К тому же. попробуй поздним связыванием динамически подгружать этот текстбокс, а по окончании его использования, или вместо очистки просто "грохать" и перезагружать.
На крайняк, попробуй поставить сервис-паки для VStudio;)



VBNullString не дает результатов, память жрет *.exe, насчет динам. подгрузки и перезагрузки компонента , этот вариант я на последок оставил, а вот как обойтись без этого , да и просто интересно почему так происходит ?

266
20 января 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by VBuser


VBNullString не дает результатов, память жрет *.exe, насчет динам. подгрузки и перезагрузки компонента , этот вариант я на последок оставил, а вот как обойтись без этого , да и просто интересно почему так происходит ?


Скорее всего, TextBox все данные, впихнутые в него, хранит где-то во внутреннем буфере, содержание которого не заменяет при смене текста, а только добавляет к которому новые данные. Если серьёзные объёмы памяти хапает (только проверь ещё раз, что это именно твоё приложение, а не "левак" какой-нибудь память жрёт!), то тут или динамическая подгрузка остаётся, или на API колдовать.:{ Сильно память отжирает-то?
P.S. Винда какая?

258
20 января 2004 года
SergeySV
1.5K / / 19.03.2003
Не знаю, мож ты уже проверял, попробуй несколько значений подряд засунуть в TextBox, например:
TextBox.Value=""
TextBox.Value="ля-ля"
TextBox.Value="ля"

и посмотри как там с памятью, произошла ли очистка, а то может он не хочет сразу старое стирать (вдруг пригодится :) )
2.2K
20 января 2004 года
VBuser
25 / / 05.09.2003
я сначала заметил в своем приложении, а потом просто сделал форму, на ней TextBox, и три кнопки,
одна запускает таймер, вторая останавливает, третья - чистит Текст, по таймеру, к примеру добавляю строку каждые 100 мсек.

причем если просто Text1.text = "qqqq", то все нормально, а если
Text1.SelStart = Len(Text1)
'Text1.SelText = vbNewLine & "blablabla" , то не очень нормально


Жрет конечно не сильно, но меня в принципе вопрос интересует?

Винда - Server 2000 (SP4)
258
20 января 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by VBuser
я сначала заметил в своем приложении, а потом просто сделал форму, на ней TextBox, и три кнопки,
одна запускает таймер, вторая останавливает, третья - чистит Текст, по таймеру, к примеру добавляю строку каждые 100 мсек.

причем если просто Text1.text = "qqqq", то все нормально, а если
Text1.SelStart = Len(Text1)
'Text1.SelText = vbNewLine & "blablabla" , то не очень нормально


Жрет конечно не сильно, но меня в принципе вопрос интересует?

Винда - Server 2000 (SP4)



Так кто ж тебе так сразу ответит. Глюк с утечкой памятью в контроле возможен. Виноват ли в этом сам контрол и в чем ошибка... это токо программисты microsoft'а могут сказать (ну можно еще конечно граммотных спецов собрать и устроить предметное тестирование, чтобы они ответили на вопрос есть или нет, но не больше).
Могу токо заметить, например, известный факт, что в первых библиотеках ADO, была ошибка при создании Connection приводившая к утечке памяти, на каждый очередной Connection по 8 кб.

2.2K
20 января 2004 года
VBuser
25 / / 05.09.2003
Цитата:
Originally posted by SergeySV


Так кто ж тебе так сразу ответит. Глюк с утечкой памятью в контроле возможен. Виноват ли в этом сам контрол и в чем ошибка... это токо программисты microsoft'а могут сказать (ну можно еще конечно граммотных спецов собрать и устроить предметное тестирование, чтобы они ответили на вопрос есть или нет, но не больше).
Могу токо заметить, например, известный факт, что в первых библиотеках ADO, была ошибка при создании Connection приводившая к утечке памяти, на каждый очередной Connection по 8 кб.



я не знаю, попробуйте если не в лом такой же сварганить примерчик, как я описал, и проверить,
а там можно сравнить будет

258
20 января 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by VBuser


я не знаю, попробуйте если не в лом такой же сварганить примерчик, как я описал, и проверить,
а там можно сравнить будет



Просто у тебя еще ситуация не очень типичная. Обычно все создают TextBox пару значений в него запихнут и все: либо больше не пихают, либо окно с этим TextBox вскоре закрывается, а чтобы так как у тебя - постоянно висело и туда все запихивалось...

Кстати, а на скоко утечка памято то, я понимаю, что от текста зависит, но она как, хоть соизмерима с размером символьной строке введенной ранее?

2.2K
21 января 2004 года
VBuser
25 / / 05.09.2003
[QUOTE]Originally posted by SergeySV


Просто у тебя еще ситуация не очень типичная. Обычно все создают TextBox пару значений в него запихнут и все:

А если например надо вести какой-нить лог, то куда кроме TextBox`а писать инфу? Можно конечно в ListBox, но с ним такая же хрень....
258
21 января 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by VBuser
[QUOTE]Originally posted by SergeySV


Просто у тебя еще ситуация не очень типичная. Обычно все создают TextBox пару значений в него запихнут и все:

А если например надо вести какой-нить лог, то куда кроме TextBox`а писать инфу? Можно конечно в ListBox, но с ним такая же хрень....



Ну в Memo какой-нибудь или RichTextFormat...
а что с логом, ну и добавляй себе скоко влезет, утечка памяти будет только если ты постоянно добавляешь , очищаешь и опять все это повторяешь.

Попробую сегодня вечером глянуть что у меня там происходит...

266
21 января 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by SergeySV


Ну в Memo какой-нибудь или RichTextFormat...
а что с логом, ну и добавляй себе скоко влезет, утечка памяти будет только если ты постоянно добавляешь , очищаешь и опять все это повторяешь.

Попробую сегодня вечером глянуть что у меня там происходит...


Вопрос. Зачем лог писать в текстбокс? Обычно его пишут в файл.
А если надо в текстбокс писать, то тогда уж можно RichTextBox и впрямь попробовать. К тому же, если такая оказия, попробуй в лейбл писать. Да полно всяких контролов...
Хотя, где-то в какой-то книжке по VB я видел пример текстового редактора на текстбоксе, который позволяет работать с текстами большой длинны. Тоесть, если там такое приводится, особенно уважаемыми авторами, то, занчит. утечка эта не такая уж существенная... Хотя как знать...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог