Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 4
1

Не могу справиться с утечкой памяти TChromium

28.05.2016, 20:47. Показов 2184. Ответов 8

Author24 — интернет-сервис помощи студентам
Добрый день

Нужна помощь, пишу примитивный браузер на d2010 с использованием TChromium у меня жутко течет память...
Пробовал на форму шлепнуть компонент перехожу по 10 сайтам оперативки скушал 300 мб...
Пробовал динамически создавать и удалять, тоже самое


Помогите чем можете)))

Добавлено через 7 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.LoadUrl(url : String);
begin
    if index>0 then    // index глобальная переменная типа Integer
      Chromium.Free;   // Chromium глобальная переменная типа TChromium
 
    Inc(index);
    Chromium:=TChromium.Create(nil);
    Chromium.Parent:=sPanel3;
    Chromium.Show;
    Chromium.Left:=0;
    Chromium.Top:=0;
    Chromium.Align:=alClient;
    Chromium.Name:='Chromium'+IntToStr(index);
    Chromium.Load(url);
end;
Процедура которой пользуюсь для перехода на сайт
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2016, 20:47
Ответы с готовыми решениями:

Как справиться с утечкой памяти в коде?
Есть вот такая форма internal partial class FindDialogForm<T> : XtraForm { public...

Что считать утечкой памяти?
class A { public: A() { cout << "create A" << endl; }; ~A() { cout << "delete A" << endl;...

Как бороться с утечкой памяти?
Добрый день! у меня такая проблема: в моей программе видимо где-то проблемы с утечкой памяти. если...

Является ли данный случай утечкой памяти?
Имеется программа, написанная на языке СИ с использованием граф. библиотеки GTK+. Запуск и...

8
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
29.05.2016, 01:25 2
Начните с того чтобы не использовать глобальные переменные...
Версию Делфи указали, хорошо. А где версия TChromium?
А так же - каким именно образом вы проверяете есть ли утечки?

Если в вашей версии утечки в самом TChromium - то никак не убрать.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
29.05.2016, 01:43 3
Цитата Сообщение от ImZullus Посмотреть сообщение
Пробовал на форму шлепнуть компонент перехожу по 10 сайтам оперативки скушал 300 мб
При таком изложении это к утечкам никак не относится.
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 4
29.05.2016, 15:26  [ТС] 4
Версия TChromium последняя качал с оф. сайта.
Про глобальную переменную понял, сейчас буду пробовать.
отпишусь по результату.

Как проверял что память улетает, через диспетчер устройств, там при заходе на каждый новый ресурс + 20 -30 мб памяти улетало.

Добавлено через 3 часа 6 минут
Перепробовал все возможные варианты очистки памяти ничерта не получается... жрет как гад

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
procedure TForm1.LoadUrl(url : String);
var
    Chromium: TChromium;
    ch : TComponent;
begin
 
    if index>0 then    // index глобальная переменная типа Integer
    begin
      ch := (FindComponent('Chromium' + IntToStr(index)));
      FreeMemory(ch);
//      ch.Free;
    end;
 
 
    Inc(index);
    Chromium:=TChromium.Create(nil);
    Chromium.Parent:=Panel2;
    Chromium.Show;
    Chromium.Left:=0;
    Chromium.Top:=0;
    Chromium.Align:=alClient;
    Chromium.Name:='Chromium'+IntToStr(index);
 
    Chromium.Load(url);
end;
0
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
29.05.2016, 15:32 5
Цитата Сообщение от ImZullus Посмотреть сообщение
Версия TChromium последняя качал с оф. сайта.
Это ни о чём. "Числа, нам нужны числа!" (с)
0
Пишу на Delphi...иногда
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
29.05.2016, 15:44 6
а что говорит профилировищик про обсуждаемую утечку памяти (тот же EuricaLog или AQTime или штатный менеджер памяти с System.ReportMemoryLeaksOnShutdown), она имеет место быть? диспетчер WIndows - неважный показатель
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 4
29.05.2016, 19:02  [ТС] 7
действительно не знаю как узнать версию качал вот отсюда https://github.com/hgourvest/dcef3

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

Добавлено через 3 минуты
Уважаемые формучане, может есть идея как можно сделать легкий браузер, не на IE, не на Chromium и без Gecko?

Добавлено через 1 час 26 минут
Нашел версию Chromium = dcef3
0
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
29.05.2016, 21:20 8
Лучший ответ Сообщение было отмечено ImZullus как решение

Решение

В обычный Диспетчер можно даже не смотреть. Ищем утечки памяти, Мифы и легенды, redux.
Цитата Сообщение от ImZullus Посмотреть сообщение
после остановки приложения гиг был занят
Что такое "остановки"?
Цитата Сообщение от ImZullus Посмотреть сообщение
не знаю как узнать версию
А вот это уже другой вопрос.

Оглавление: https://github.com/hgourvest/dcef3/branches
Мастер не считается: он то древний, то нестабильный. На данный момент там:Собственно как узнать:
Delphi
1
2
3
4
Procedure TForm1.Button1Click(Sender: TObject);
Begin
Chromium1.Load('about:version');
End;
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 4
30.05.2016, 17:11  [ТС] 9
Спасибо, обновил, все работает!
0
30.05.2016, 17:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2016, 17:11
Помогаю со студенческими работами здесь

Когда исправят баг с утечкой памяти в Rhythmbox?
В Ubuntu 12.04 x64 есть утечка памяти в Rhythmbox, мегабайт на 1 песню примерно... Исправлен ли...

Setjmp, longjmp, malloc - как бороться с утечкой памяти
Здравствуйте! Вот небольшой тестовый пример, в котором, как я понимаю, free(buf) никогда не...

Как бороться с утечкой памяти в приложении при его длительной работе
Всем доброго времени суток. Началось все с того, что после недельной бесперерывной работы...

Освобождение памяти TChromium
Здравствуйте, товарищи! Такая проблема... TChromium создаю динамически и связываю с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru