Вверх ↑
Этот топик читают: Гость
Ответов: 902
Рейтинг: 27
#1: 2015-03-12 13:58:42 ЛС | профиль | цитата
Здравствуйте.
При закрытии вкладок в компоненте PageControl с помощью точки: ##delete, когда в каждой новой вкладке открыт компонент браузера с загруженной страницей, такое ощущение, что память не освобождается и размер занимаемой памяти, при создании и закрытии новых вкладок постоянно растёт до бесконечности.
Можно ли как-то очищать память, при закрытии вкладки?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1536
Рейтинг: 176
#2: 2015-03-12 16:51:33 ЛС | профиль | цитата
juk, где проблемная схема
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 902
Рейтинг: 27
#3: 2015-03-12 22:11:07 ЛС | профиль | цитата
ser_davkin, Я думаю любая схема будет проблемной.
Я же описал причину.
Не освобождается память, при закрытии вкладок в компоненте: PageControl
------------ Дoбавленo в 21.30:
Вот сделал небольшой пример. Если несколько раз поочерёдно нажимать пуск-стоп, то размер занимаемой памяти, потихоньку увеличивается.
Add(MainForm,2953706,308,91)
{
Width=988
Height=599
}
Add(PageControl,11277553,756,133)
{
Width=970
Height=450
Selected="base"
SelectAdd=0
Point(doSetFocus)
Point(PHandle)
Point(Handle)
}
BEGIN_SDK
Add(EditPolyMulti,3572540,21,21)
{
WorkCount=#5:##add|10:doNavigate|8:##select|8:##delete|10:doSetFocus|9:doRefresh|6:doBack|9:doForward|6:doStop|6:doData|8:doEvent1|
EventCount=#8:onNewTab|9:onThisTab|8:onEvent2|7:onEvent|
VarCount=#7:##count|4:Page|7:PHandle|10:CurrentURL|6:Handle|
DataCount=#4:Data|3:URL|
Width=1259
Height=676
Point(##add)
Point(##select)
Point(##delete)
Point(##count)
link(doNavigate,14620706:doNavigate,[(165,34)(165,153)])
link(Page,14620706:Page,[(34,451)(321,451)])
link(PHandle,14620706:PHandle,[(41,451)(328,451)])
link(CurrentURL,14620706:CurrentURL,[(48,455)(314,455)])
link(Handle,14620706:Handle,[(55,455)(335,455)])
}
Add(EventFromData,5314568,168,56)
{
link(onEvent,7768100:doEvent1,[])
}
Add(DoData,8246284,98,56)
{
Data=Integer(1)
link(onEventData,5314568:doData,[])
}
Add(Hub,7768100,245,56)
{
link(onEvent1,8246284:doData,[(271,62)(271,50)(86,50)(86,62)])
link(onEvent2,3572540:onNewTab,[(769,69)(769,27)])
}
Add(WebBrowser,14620706,308,147)
{
Left=1
Top=1
Width=975
Height=530
Align=5
Name="br"
URL=""
Silent=0
Point(NewWindow)
Point(Navigate)
Point(doSavePage)
Point(doFromText)
Point(doVisible)
Point(PHandle)
Point(Handle)
Point(doSetFocus)
link(onNavigate,3572540:onEvent2,[(810,153)(810,41)])
link(URL,3572540:URL,[(314,84)(34,84)])
link(NewWindow,5314568:GetData,[(321,117)(174,117)])
}
Add(PagePanel,16760219,784,175)
{
Top=5
Width=977
Height=532
Point(doCaption)
Point(onChange)
}
END_SDK
Add(DoData,5915762,553,133)
{
Data=String(base)
link(onEventData,11277553:##add,[])
}
Add(Hub,16753069,518,168)
{
OutCount=3
link(onEvent1,5915762:doData,[(542,174)(542,139)])
link(onEvent2,12377349:doOperation,[(595,181)(595,153)])
link(onEvent3,11277553:doNavigate,[(644,188)(644,146)])
}
Add(Math,12377349,658,147)
{
OpType=1
Op2=1
link(onResult,15365269:doWork2,[])
link(Op1,2731539:Var1,[(664,135)(713,135)(713,225)])
}
Add(Button,10254230,378,168)
{
Left=5
Top=545
link(onClick,6316487:doEnum,[])
}
Add(StrList,13829094,434,91)
{
Strings=#20:http://www.hiasm.com|31:http://www.hiasm.com/forum.html|21:http://www.yandex.ru/|13:http://ok.ru/|19:http://juk-soft.ru/|28:http://juk-soft.ru/zirk.html|30:http://juk-soft.ru/katalog.php|32:http://juk-soft.ru/programmi.php|27:http://juk-soft.ru/SAFE.php|25:http://online.anidub.com/|33:https://www.google.ru/?gws_rd=ssl|26:http://online.animedia.tv/|19:https://wf.mail.ru/|14:http://2ip.ru/|26:http://2ip.ru/isp-reviews/|
}
Add(ArrayEnum,6316487,448,168)
{
link(onItem,16753069:doEvent1,[])
link(Array,13829094:Array,[])
}
Add(DoData,10334437,574,329)
{
link(onEventData,10838321:doCompare,[])
link(Data,2731539:Var2,[(580,279)(727,279)])
}
Add(If_else,10838321,616,329)
{
Op2=Integer(1)
link(onTrue,5541605:doStop,[(660,335)(660,339)(513,339)(513,342)])
link(onFalse,13536647:doData,[])
}
Add(DoData,13536647,665,336)
{
Data=Integer(1)
link(onEventData,8232618:doEvent1,[])
}
Add(Timer,5541605,525,329)
{
Interval=100
Enable=1
link(onTimer,10334437:doData,[])
}
Add(Hub,8232618,714,336)
{
link(onEvent1,756690:doData,[])
link(onEvent2,11277553:##delete,[(742,349)(742,160)])
}
Add(DoData,756690,756,336)
{
Data=Integer(0)
link(onEventData,15365269:doWork3,[(800,342)(800,249)(732,249)])
}
Add(Button,14612646,441,329)
{
Left=180
Top=545
Caption="stop"
link(onClick,5541605:doTimer,[])
}
Add(HubEx,15365269,728,147)
{
link(onEvent,11277553:##select,[])
}
Add(GetDataEx,2731539,721,220)
{
Angle=1
link(Data,11277553:##count,[(762,225)])
}


------------ Дoбавленo в 22.11:
Спецы, подскажите можно ли решить эту проблемму?
Попадаются такие сайты, при открытии нескольких страниц на которых, программа жрёт памяти немерянно.
После закрытия вкладок, обьём занимаемой памяти уменьшается незначительно.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 1133
Рейтинг: 81
#4: 2015-03-12 22:47:03 ЛС | профиль | цитата
PageControl тут не виноват, для примера тестовая схемка.
Сверху добавить картинку метровую для лучшей визуализации.
А вот с браузером действительно ram хавает.

code_35329.txt
карма: 2

0
файлы: 1code_35329.txt [2.6KB] [447]
Ответов: 902
Рейтинг: 27
#5: 2015-03-12 22:54:59 ЛС | профиль | цитата
tom-it, Так а победить это можно? Без браузера ведь никак не обойтись.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 8959
Рейтинг: 824
#6: 2015-03-12 22:57:18 ЛС | профиль | цитата
juk, действительно, дело в браузере не только память жрёт, но и после удаления почти полностью занимаемая память остаётся А может так и надо
code_35330.txt
карма: 19

0
файлы: 1code_35330.txt [2.5KB] [287]
Ответов: 902
Рейтинг: 27
#7: 2015-03-12 23:01:32 ЛС | профиль | цитата
Леонид писал(а):
А может так и надо

Мне точно так не надо!
Как бы это победить?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 4664
Рейтинг: 767
#8: 2015-03-13 12:21:16 ЛС | профиль | цитата
hiWebBrowser.pas (402) писал(а):
(PKOLWebBrowser(Control).Document as IPersistStreamInit).Save(TStreamAdapter.Create(p),true);

hiWebBrowser.pas (420) писал(а):
(PKOLWebBrowser(Control).Document as IPersistStreamInit).Load(TStreamAdapter.Create(p));

Я может чего не понимаю, но если есть TStreamAdapter.Create(p), то кто его должен уничтожать? Привет java-истам. Правда, вряд-ли это имеет отношение к данному случаю.
карма: 26

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#9: 2015-03-13 12:51:53 ЛС | профиль | цитата
Netspirit, а причем здесь загрузка текста, когда то же самое наблюдается при загрузке URL, те не используется стрим, а используется Navigate
------------ Дoбавленo в 12.51:
А это все, случаем, не из этой оперы -- http://with-love-from-siberia.blogspot.ru/2011/05/blog-post.html
карма: 22

0
Ответов: 8959
Рейтинг: 824
#10: 2015-03-13 12:56:26 ЛС | профиль | цитата
nesco, если после удаления поискать эти окна? и удалить -- может получится?
карма: 19

0
Ответов: 4664
Рейтинг: 767
#11: 2015-03-13 13:46:26 ЛС | профиль | цитата
Я с этими COM-объектами не очень разбираюсь, может где-то не прописано уничтожение чего-то...
Надо в KOLSHDocVw.pas, KOLComObj.pas смотреть.
карма: 26

0
Ответов: 8959
Рейтинг: 824
#12: 2015-03-13 14:06:25 ЛС | профиль | цитата
Сейчас смотрел в Диспетчере задач и через HiAsm-овский перечень окон, даже при большом количестве открытых IE, отображается как один проект и одна форма, при удалении части IE ничего не меняется
карма: 19

0
Ответов: 902
Рейтинг: 27
#13: 2015-03-13 14:50:03 ЛС | профиль | цитата
Леонид писал(а):
при удалении части IE ничего не меняется

Я это первым делом попробовал. Результат тот-же был.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 9906
Рейтинг: 351
#14: 2015-03-13 17:11:24 ЛС | профиль | цитата
Netspirit писал(а):
но если есть TStreamAdapter.Create(p), то кто его должен уничтожать?

Сколько раз я аналогичные вопросы задавал про другие компоненты - и не сосчитать
И мне тоже хотелось передать привет java-истам.

А в этот элемент я просто не лез. Там "слова" мне незнакомые встречались...
карма: 9

0
Ответов: 8959
Рейтинг: 824
#15: 2015-03-13 17:21:26 ЛС | профиль | цитата
Galkov, а мне и знакомые не встречались А так хотелось коллеге juk-у помочь, а то у него на сайте посещаемость упала
карма: 19

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)