Здравствуйте.
При закрытии вкладок в компоненте PageControl с помощью точки: ##delete, когда в каждой новой вкладке открыт компонент браузера с загруженной страницей, такое ощущение, что память не освобождается и размер занимаемой памяти, при создании и закрытии новых вкладок постоянно растёт до бесконечности.
Можно ли как-то очищать память, при закрытии вкладки?
Этот топик читают: Гость
Ответов: 902
Рейтинг: 27
|
|||
карма: 1 |
|
Ответов: 1536
Рейтинг: 176
|
|||
juk, где проблемная схема
![]() |
|||
карма: 1 |
|
Ответов: 902
Рейтинг: 27
|
|||
ser_davkin, Я думаю любая схема будет проблемной.
Я же описал причину. Не освобождается память, при закрытии вкладок в компоненте: PageControl ------------ Дoбавленo в 21.30: Вот сделал небольшой пример. Если несколько раз поочерёдно нажимать пуск-стоп, то размер занимаемой памяти, потихоньку увеличивается.
Спецы, подскажите можно ли решить эту проблемму? Попадаются такие сайты, при открытии нескольких страниц на которых, программа жрёт памяти немерянно. После закрытия вкладок, обьём занимаемой памяти уменьшается незначительно. |
|||
карма: 1 |
|
Ответов: 1133
Рейтинг: 81
|
|||
PageControl тут не виноват, для примера тестовая схемка.
Сверху добавить картинку метровую для лучшей визуализации. А вот с браузером действительно ram хавает. code_35329.txt |
|||
карма: 2 |
| ||
файлы: 1 | code_35329.txt [2.6KB] [447] |
Ответов: 902
Рейтинг: 27
|
|||
tom-it, Так а победить это можно? Без браузера ведь никак не обойтись.
|
|||
карма: 1 |
|
Ответов: 8959
Рейтинг: 824
|
|||
juk, действительно, дело в браузере
![]() ![]() ![]() code_35330.txt |
|||
карма: 19 |
| ||
файлы: 1 | code_35330.txt [2.5KB] [287] |
Ответов: 902
Рейтинг: 27
|
|||
Леонид писал(а): А может так и надоМне точно так не надо! ![]() Как бы это победить? ![]() |
|||
карма: 1 |
|
Ответов: 4664
Рейтинг: 767
|
|||
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 |
|
Разработчик
Ответов: 26305
Рейтинг: 2146
|
|||
Netspirit, а причем здесь загрузка текста, когда то же самое наблюдается при загрузке URL, те не используется стрим, а используется Navigate
![]() ------------ Дoбавленo в 12.51: А это все, случаем, не из этой оперы -- http://with-love-from-siberia.blogspot.ru/2011/05/blog-post.html |
|||
карма: 22 |
|
Ответов: 8959
Рейтинг: 824
|
|||
nesco, если после удаления поискать эти окна? и удалить -- может получится?
|
|||
карма: 19 |
|
Ответов: 4664
Рейтинг: 767
|
|||
Я с этими COM-объектами не очень разбираюсь, может где-то не прописано уничтожение чего-то...
Надо в KOLSHDocVw.pas, KOLComObj.pas смотреть. |
|||
карма: 26 |
|
Ответов: 8959
Рейтинг: 824
|
|||
Сейчас смотрел в Диспетчере задач и через HiAsm-овский перечень окон, даже при большом количестве открытых IE, отображается как один проект и одна форма, при удалении части IE ничего не меняется
![]() |
|||
карма: 19 |
|
Ответов: 902
Рейтинг: 27
|
|||
Леонид писал(а): при удалении части IE ничего не меняетсяЯ это первым делом попробовал. Результат тот-же был. |
|||
карма: 1 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Netspirit писал(а): но если есть TStreamAdapter.Create(p), то кто его должен уничтожать?Сколько раз я аналогичные вопросы задавал про другие компоненты - и не сосчитать ![]() И мне тоже хотелось передать привет java-истам. А в этот элемент я просто не лез. Там "слова" мне незнакомые встречались... |
|||
карма: 9 |
|
Ответов: 8959
Рейтинг: 824
|
|||
Galkov, а мне и знакомые не встречались
![]() ![]() ![]() |
|||
карма: 19 |
|