Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.09.2010, 17:05
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
Печаль Программа жрёт память! Нужна помощь

Приветствую Вас!

Пишу прогу, которая с помощью Embedded Web Browsser-a выполняет автоматически действия в инете (собирает статистику с онлайн-игры), всё ПРЕКРАСНО работает, но через пару часов работы моя прога начинает кушать метров 400 памяти, и бук, на котором всё это запущено, мягко выражаясь, просто дохнет. Система вся умирает. Я понимаю, железо надо апгрейдить, все дела, но суть-то не в том.

Не может такая прога есть полгига памяти.
Да, и также у меня есть программа попроще, которая не так оперативно и активно собирает статистику, вот она работает нормально, кушает до 30-50 метров и комп вообще не грузит.

Хотел спросить, как можно понять, какие именно компоненты (переменные, массивы и т.п.) постепенно выедают память?

Готов ставить любой софт, дописывать дебаггер в прогу или собиралку статистики по памяти, которая используется программой, лишь бы разобраться.

Если подозрение на веббраузер - то я пользовался и стандартным Webbrowser, та же ерунда.

Также пробовал убивать браузер в конце цикла работы программы, и вообще потом убирать его с формы.
Не помогает, память при этом НЕ ОСВОБОЖДАЕТСЯ.

Что сделать?

Помогите, плз.

Да, я начинающий, поэтому пара строк с ничего не говорящими для чайников терминами мне вряд ли поможет

И спасибо!

И еще.
Одна программа у меня издает звуки кликов в браузере в процессе работы, а вторая - нет.
Как мне отключить навсегда эти звуки?
пробовал выключить системные звуки - не помогло
Ответить с цитированием
  #2  
Старый 01.09.2010, 17:57
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Что-то где-то утекает. Поищи, где у тебя может что-то не удаляться...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 01.09.2010, 18:09
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

посчитать количество "выделяющих" память функций (GetMemory, AllocMem и т.д.), количество вызовов конструктора Create() и сравнить с количеством "освобождающих" память функций (FreeMemory, FreeMem и т.д.), количеством вызовов деструктора Free().
Ответить с цитированием
  #4  
Старый 01.09.2010, 19:07
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
По умолчанию

GetMemory, AllocMem - Не использую.

Create() - у меня просто дохрена, и они довольно объемные.

Но Free() обязательно стоит в конце. причем, если Free ессно не в условиях и не в TRY EXCEPT , а просто жестко прописан и всё.

Я вот еще на браузер грешу, только не представляю, как очистить его темп-директорию...

Ладно, буду искать. Черт.
Спасиб!
Ответить с цитированием
  #5  
Старый 01.09.2010, 19:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Какая версия IE стоит на машине. Вообще, этот браузер замечен в недобросовестной работе с памятью... Я бы, если это возможно, вообще отказался бы от WebBrauser'а и переписал бы все на Indy.
Ответить с цитированием
  #6  
Старый 01.09.2010, 19:20
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Поддержу Imikle. Ибо встраиваемые браузеры - редкостное гуано, как и мелкомягкий "Исследователь".
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #7  
Старый 01.09.2010, 22:33
romingood romingood вне форума
Прохожий
 
Регистрация: 26.02.2010
Сообщения: 36
Репутация: 9
Подмигивание

Господа!

Я Вам немножко поясню.
Моя программа (та часть, что еще в разработке, но уже функционирует) делает следующее:

Открывает страницу (онлайн-игры), находит определенные ссылки, также находит определенные тексты, получает данные из форм, потом заполняет форму новыми данными, и жмёт Сабмит на форме.


После сабмита также идет поиск текста на возвращенной странице, с обработкой ошибок.

При этом всё происходящее отображается на экране, как будто я сам нажимаю кнопки и т.п. то есть всё очень наглядно. (хотя я готов этим пожертвовать ради быстродействия проги)

Программно генерить ПОСТ не хочется, там всякие защитные коды и т.п.
конечно их можно прочитать и использовать... но у меня довольно большая часть функционала уже работает.

Я готов бы переделать это всё на ИНДИ, но только если возможно реализовать весь мой функционал с помощью этого компонента.
Ответить с цитированием
  #8  
Старый 02.09.2010, 00:42
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

В своё время писал что то подобное... Но для меня писать что то такими методами как ты описываешь было тоже самое что записать события мышки и клавиатуры, а потом воспроизводить!!! Согласен lmikle... Да он вообще какойто Молодец! Переписывай всё на Indy! http://www.google.com.by/ От себя могу добавить: Как я делал: Ищешь просто в коде страницы с которой отправляется запрос строки типа:
Код HTML:
<form action="search.php" method="post"> <input type="hidden" name="do" value="process" /> <input type="hidden" name="showposts" value="0" /> <input type="hidden" name="quicksearch" value="1" /> <input type="hidden" name="s" value="" /> <input type="text" class="bginput" name="query" size="20" /><input type="submit" class="button" value="Вперед" /><br /> </form>
Это пост запрос для поиска с данного форума!!! Принцип я думаю будет понятен!!! Ну вот вроде всё, в общих чертах!!! А вообще хотелось бы посмотреть на исходники, ну так, чисто "Поржать"...
Ответить с цитированием
  #9  
Старый 03.09.2010, 12:00
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

По поводу поиска утечек памяти:
http://www.gunsmoker.ru/2009/05/blog-post_24.html

Мне обычно хватало
FastMM
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:30.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter