Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

отловить разрастание памяти


Cobalt ©   (21.11.17 18:39

В процессе работы у одного клиента растет занимаемая память.
Через 4-8 дней  получает ошибку OutOfMemory

Ситуация осложняется тем, что в работе используются посторонние DLL (Сбербанк, например)

Вопрос: Как отловить "лишнюю занятую" память? Хотя бы свою.

ReportMemoryLeak дает одну единственную утечку ХЗ где-то в WindowProc на 8-12 байт, и всё.
Значит, где-то в список какой пихаются данные, которые освобождаются только при закрытии приложения. Списков таких немного, можно отслеживать.

А может где-то контролы не удалятся, а только прячутся.

Как отлавливать такое, порекомендуйте.


Германн ©   (22.11.17 02:51[1]

И Эврика тоже не помогает?


Eraser ©   (24.11.17 06:06[2]


> Cobalt ©   (21.11.17 18:39) 
> В процессе работы у одного клиента растет занимаемая память.
>
> Через 4-8 дней  получает ошибку OutOfMemory

только у одного?
тогда нужно отследить, чем его система или работа с ПО отличается от других.


Rouse_ ©   (24.11.17 09:47[3]


> Через 4-8 дней  получает ошибку OutOfMemory

Раз ReportMemoryLeak утечки не дает, значит дело не в памяти, а в ее дефрагментации.
Просто в какой-то момент у менеджера не получается выделить требуемый кусок, ибо подходящих такого размера и не занятых банально нет.


Cobalt ©   (28.11.17 09:19[4]

А почему тогда растет занятая память?
по диспетчеру задача растет и виртуальная, и PrivateBytes, и WorkingSet

Можно как-то по карте памяти (если снимать её раз в сутки) понять чем она занята?
Как-то отличать строки от классов?


Eraser ©   (28.11.17 13:26[5]


> Cobalt ©   (28.11.17 09:19) [4]

обычно можно.
вот отличная утилита у Розыча
http://rouse.drkb.ru/winapi.php#pmm2
когда возникают "проблемы с памятью" экономит кучу времени.


Игорь Шевченко ©   (28.11.17 13:30[6]

https://docs.microsoft.com/en-us/sysinternals/downloads/vmmap


Cobalt ©   (28.11.17 16:37[7]

Да карту-то я сниму, вопрос - чё мне с этим добром потом делать?


Игорь Шевченко ©   (28.11.17 18:02[8]


> Да карту-то я сниму, вопрос - чё мне с этим добром потом
> делать?


Сравнить с картой памяти у других клиентов, например.
Возможно, внедряются какие-то дополнительные DLL хуков, которые гадят, я не знаю твоей ситуации.
По меньшей мере - искать разницу.


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо