|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Программа жрёт память! Нужна помощь
Приветствую Вас!
Пишу прогу, которая с помощью Embedded Web Browsser-a выполняет автоматически действия в инете (собирает статистику с онлайн-игры), всё ПРЕКРАСНО работает, но через пару часов работы моя прога начинает кушать метров 400 памяти, и бук, на котором всё это запущено, мягко выражаясь, просто дохнет. Система вся умирает. Я понимаю, железо надо апгрейдить, все дела, но суть-то не в том. Не может такая прога есть полгига памяти. Да, и также у меня есть программа попроще, которая не так оперативно и активно собирает статистику, вот она работает нормально, кушает до 30-50 метров и комп вообще не грузит. Хотел спросить, как можно понять, какие именно компоненты (переменные, массивы и т.п.) постепенно выедают память? Готов ставить любой софт, дописывать дебаггер в прогу или собиралку статистики по памяти, которая используется программой, лишь бы разобраться. Если подозрение на веббраузер - то я пользовался и стандартным Webbrowser, та же ерунда. Также пробовал убивать браузер в конце цикла работы программы, и вообще потом убирать его с формы. Не помогает, память при этом НЕ ОСВОБОЖДАЕТСЯ. Что сделать? Помогите, плз. Да, я начинающий, поэтому пара строк с ничего не говорящими для чайников терминами мне вряд ли поможет И спасибо! И еще. Одна программа у меня издает звуки кликов в браузере в процессе работы, а вторая - нет. Как мне отключить навсегда эти звуки? пробовал выключить системные звуки - не помогло |
#2
|
||||
|
||||
Что-то где-то утекает. Поищи, где у тебя может что-то не удаляться...
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
посчитать количество "выделяющих" память функций (GetMemory, AllocMem и т.д.), количество вызовов конструктора Create() и сравнить с количеством "освобождающих" память функций (FreeMemory, FreeMem и т.д.), количеством вызовов деструктора Free().
|
#4
|
|||
|
|||
GetMemory, AllocMem - Не использую.
Create() - у меня просто дохрена, и они довольно объемные. Но Free() обязательно стоит в конце. причем, если Free ессно не в условиях и не в TRY EXCEPT , а просто жестко прописан и всё. Я вот еще на браузер грешу, только не представляю, как очистить его темп-директорию... Ладно, буду искать. Черт. Спасиб! |
#5
|
|||
|
|||
Какая версия IE стоит на машине. Вообще, этот браузер замечен в недобросовестной работе с памятью... Я бы, если это возможно, вообще отказался бы от WebBrauser'а и переписал бы все на Indy.
|
#6
|
||||
|
||||
Поддержу Imikle. Ибо встраиваемые браузеры - редкостное гуано, как и мелкомягкий "Исследователь".
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#7
|
|||
|
|||
Господа!
Я Вам немножко поясню. Моя программа (та часть, что еще в разработке, но уже функционирует) делает следующее: Открывает страницу (онлайн-игры), находит определенные ссылки, также находит определенные тексты, получает данные из форм, потом заполняет форму новыми данными, и жмёт Сабмит на форме. После сабмита также идет поиск текста на возвращенной странице, с обработкой ошибок. При этом всё происходящее отображается на экране, как будто я сам нажимаю кнопки и т.п. то есть всё очень наглядно. (хотя я готов этим пожертвовать ради быстродействия проги) Программно генерить ПОСТ не хочется, там всякие защитные коды и т.п. конечно их можно прочитать и использовать... но у меня довольно большая часть функционала уже работает. Я готов бы переделать это всё на ИНДИ, но только если возможно реализовать весь мой функционал с помощью этого компонента. |
#8
|
|||
|
|||
В своё время писал что то подобное... Но для меня писать что то такими методами как ты описываешь было тоже самое что записать события мышки и клавиатуры, а потом воспроизводить!!! Согласен lmikle... Да он вообще какойто Молодец! Переписывай всё на Indy! http://www.google.com.by/ От себя могу добавить: Как я делал: Ищешь просто в коде страницы с которой отправляется запрос строки типа:
Код HTML:
|
#9
|
||||
|
||||
По поводу поиска утечек памяти:
http://www.gunsmoker.ru/2009/05/blog-post_24.html Мне обычно хватало FastMM |