Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2016, 17:02   #1
КатяСаша
 
Регистрация: 16.10.2016
Сообщений: 9
По умолчанию webbrowser при обновлении страницы занимает больше оперативной памяти

Имеется форма VCL, на ней кнопка и браузер, после каждого просмотра видео память увеличивается на 10-15 мб, у кого какие есть идеи на этот счёт? В гугле это не решенный вопрос.


Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Stop;
WebBrowser1.DestroyComponents;
WebBrowser1:=TWebBrowser.Create(Form1);
TWinControl(WebBrowser1).Parent:=Form1;
WebBrowser1.Width:=406;
WebBrowser1.Height:=231;
WebBrowser1.Navigate('https://www.youtube.com/++++++++++');
end;

Последний раз редактировалось Alex11223; 01.11.2016 в 17:10.
КатяСаша вне форума Ответить с цитированием
Старый 01.11.2016, 17:10   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Если повторить 100 раз, то будет 1 ГБ памяти или все-таки останется на например 100-200 МБ?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.11.2016, 17:11   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Код:
WebBrowser1:=TWebBrowser.Create(For m1);
создали новый объект => заняли больше памяти.

Код:
WebBrowser1.Free;
уничтожили объект => освободили память.

поскольку он уже есть
Цитата:
Код:
WebBrowser1.Stop;
WebBrowser1.DestroyComponents;
то его НЕ НАДО создавать заново.
Код:
WebBrowser1:=TWebBrowser.Create(For m1);
и не придется уничтожать
Код:
WebBrowser1.Free;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 01.11.2016 в 17:15.
evg_m вне форума Ответить с цитированием
Старый 01.11.2016, 17:29   #4
КатяСаша
 
Регистрация: 16.10.2016
Сообщений: 9
По умолчанию

Да, если задать много повторов то память набирается и приложение виснет.
КатяСаша вне форума Ответить с цитированием
Старый 01.11.2016, 17:35   #5
КатяСаша
 
Регистрация: 16.10.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Если повторить 100 раз, то будет 1 ГБ памяти или все-таки останется на например 100-200 МБ?
Совершенно верно
КатяСаша вне форума Ответить с цитированием
Старый 01.11.2016, 17:44   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что верно? Это был "А или Б?" вопрос.
И зачем повторять 2 раза?

Лучше б прочитали следующее сообщение, где говорится о том, что надо либо не создавать новые экземпляры веббраузера, либо нормально уничтожать старые.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.11.2016, 17:58   #7
КатяСаша
 
Регистрация: 16.10.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Что верно? Это был "А или Б?" вопрос.
И зачем повторять 2 раза?

Лучше б прочитали следующее сообщение, где говорится о том, что надо либо не создавать новые экземпляры веббраузера, либо нормально уничтожать старые.
Это был ответ на ваш вопрос, о том что память растёт.
Мы пробовали не создавать веббраузер при помощи create, а размещали его на форме ( так ведь и проще) Но и в этом случае есть рост памяти(
КатяСаша вне форума Ответить с цитированием
Старый 01.11.2016, 18:24   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Попробовал, ничего не увеличивается выше 50-100 МБ.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    procedure tmr1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    wb: TWebBrowser;
    timer: TTimer;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  wb := TWebBrowser.Create(Self);
  TWinControl(wb).Parent:=Self;
  wb.Width:=406;
  wb.Height:=231;

  timer := TTimer.Create(Self);
  timer.Interval := 3000;
  timer.OnTimer := tmr1Timer;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
  wb.Navigate('https://www.youtube.com/');
end;

end.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.11.2016, 18:29   #9
КатяСаша
 
Регистрация: 16.10.2016
Сообщений: 9
По умолчанию

я скопировал ваш код , запустил у себя вижу прирост в памяти. Странное дело, я только что запустил у себя IE и попробовал там загрузить видео и заметил что при каждом обновлении страницы память растёт.
у меня IE 11 версии, отключил показ картинок и выбрал " Удалить историю при закрытии"
Теперь я совсем не знаю что делать

Последний раз редактировалось Alex11223; 01.11.2016 в 18:32.
КатяСаша вне форума Ответить с цитированием
Старый 01.11.2016, 18:36   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от КатяСаша Посмотреть сообщение
у меня IE 11 версии
По умолчанию WebBrowser использует режим 7 версии IE независимо от версии установленной на компе.
Это кроме прочего скорее всего означает, что для видео используется флеш вместо HTML5 <video>. Может из-за него и проблема.

Можно изменить это в реестре http://msdn.microsoft.com/en-us/libr...wser_emulation
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WebGL, three.js. Проблемы с заполением оперативной памяти при загрузке текстур JannaDark Помощь студентам 0 27.05.2014 14:59
Задача-найти объем оперативной памяти по шестнадцатеричному адресу последнего байта оперативной памяти Ksana Alex Помощь студентам 4 14.11.2013 15:51
Сохранить данные при обновлении страницы apx_angel JavaScript, Ajax 2 11.10.2011 15:54
действие при обновлении webbrowser Niklan Общие вопросы Delphi 6 07.11.2009 20:45
Количество оперативной памяти которое занимает программа werser Помощь студентам 1 03.02.2008 02:22