powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Утечки памяти в приложении - FasMM, EurekaLog
17 сообщений из 42, страница 2 из 2
Утечки памяти в приложении - FasMM, EurekaLog
    #40114065
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дегтярев Евгений
Andi_WEB
> Если мегабайт в секунду, то было бы...

Имелось в виду, на мегабайт в секунду начинает увеличиваться объем потребляемой памяти по диспетчеру. До этого - около 30 мегабайт на протяжении пары часов. Потом резко увеличиваетсмя до 130 мб в течении короткого промежутка времени. Вот прям случайно это земетил, совпадение. А потом опять несколько часов работает на 130 мб...

если утекают сущности, связанные с коннектом, то при массовых реконнектах может быть именно такая картинка
освобождается ли память при штатном завершении websocket соединения? закрытии tcp коннекта без отправки вебсоктного фрейма close? при обрыве соединения?

Ты не выдумывай страшилки, просто покажу код.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114067
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

??
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114093
Andi_WEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дегтярев Евгений,
Добрый день. У меня там кроме Веб-сокетов еще были обычные TCP-клиеты. Вот они создавались динамически, а для предыдущих экземпляров только принудительно разрывалось соединение. Согласен, что это неправильно. Но счет им, в любом случае, шел не на тысячи. Eureka заработала, лог можно изучить. За примерно пару часов - общаяя утечка составила около 50 кб, из них на клиентах более половины. Реконнектов там нет, просто разрыв соединения и создается новый клиент, который живет несколько десятков минут. Заинтересовало само явление - взрывной рост на примерно 100 мб в памяти (от 30 до 130) после нескольких часов. Потом стабилизация. Пока такого роста не зафиксировал, как назло. До работы с Eureka было дважды. Интересно, где!
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114097
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andi_WEB
... Заинтересовало само явление - взрывной рост на примерно 100 мб в памяти (от 30 до 130) после нескольких часов. Потом стабилизация. Пока такого роста не зафиксировал, как назло. До работы с Eureka было дважды. Интересно, где!

Ну, или диспетчер памяти хапнул блок, или сам компонент. Вон, в С++, бывалоча, пихаешь новые
данные в вектор, так в ём, векторе, память резервироваллась не "сколько надо прямо сейчас", а с каждым разом все больше, экспоненциально.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114122
Andi_WEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> так в ём, векторе, память резервироваллась не "сколько надо прямо сейчас", а с каждым разом все больше, экспоненциально.

И и меня есть подозрение, (дилетантское конечно) что это Винда расщедрилась. ИИ в ней так сработал типа. "На тебе пямяти, ты хороший парень, вдруг она тебе еще понадобится, все равно у меня ее еще дофига". Кстати! Вспомнил. Один раз я заметил даже, что примерно после часа-полутора работы на 130 мегабайтах было такое же "взрывное" увеличение до ~ 250 Мб по диспетчеру за пару минут. Сейчас, кстати, то же приложениие в том же окружении работает почти три часа. Потребление памяти - 26,4 Мб. Буду наблюдать, уже с Эврикой.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114138
Andi_WEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно предположить, конечно, что в моменты, предшествующие росту потребления памяти, вкладка в браузере была не активна - в основном, это действительно так, и данные по WEB-Socket "не выбирались". Но, насколькр я читал, JavaScript машина понижает приоритеты для таймеров например. А вот WS работают вроде как практически с обычным приоритетом. По линии TCP клиентов, т.к они в приложении, особых причуд быть не должно. Там связь постоянная и устойчивая, за исключением того, что отработавшие клиенты, как я уже говорил, не уничтожаются, а только отключаются. Ну и Эврика для TCP клиентов четко фиксирует утечку в десятки килобайт в час. А тут под сто метров...
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114149
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andi_WEB, я не знаю, что именно вы смотрите, но по умолчанию диспетчер задач показывает сколько RAM выделяется программе. Это значение крайне слабо коррелирует с количеством выделенной в программе памяти.

У меня стоит Process Explorer в качестве диспетчера, но мне припоминается, что в штатном диспетчере Win10 в настройках была колонка Commit Size или что-то такое - это и будет реальное выделение памяти.

Во-вторых, утечка памяти Delphi тоже не всегда связаны с утечками памяти вообще. Например, вы можете создать TBitmap и его утечка - это, сколько, килобайт? Но в нём же есть HBITMAP - это по сути ссылка на растр в памяти. Он может мегабайты занимать, но как утечка обнаружен не будет, т.к. выделяется через другой менеджер памяти, не через Delphi. Однако устранив утечку TBitmap (килобайта) - устраните и утечку HBITMAP (мегабайтов). Ну, или если ваш код делает detach HBITMAP из TBitmap и потом утекает HBITMAP - тогда да, тут уже надо искать утечки не памяти Delphi, а прочих ресурсов.

Есть мнение, что надо начать с того, что устранить утечку уже найденного - начиная с самых комплексных объектов, типа TIdTCPClient, которых у вас утекло больше 200 штук! При этом, скорее всего, перестанут утекать и более мелкие, зависимые от него, объекты. Ну не знаю, какие-нибудь строки, TIdReply, TStringList...
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114153
Andi_WEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GunSmoker,

> Есть мнение, что надо начать с того, что устранить утечку уже найденного - начиная с самых комплексных объектов, типа TIdTCPClient.

Согласен, спасибо. Сегодня вечером сделаю.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114166
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andi_WEB
меня есть подозрение, (дилетантское конечно) что это Винда расщедрилась

Не, винда дает столько, сколько попросишь.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114169
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Andi_WEB
меня есть подозрение, (дилетантское конечно) что это Винда расщедрилась

Не, винда дает столько, сколько попросишь.
Да ладно. Это она говорит, что столько дала, а сама выделяет с запасом.
Иначе бы GlobalRealloc не срабатывал бы почти никогда.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114182
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock,

VirtualAlloc() выделяет память блоками по 4К, сколько процесс запросит - столько и получит, не больше (и кратно).
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114211
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
YuRock,

VirtualAlloc() выделяет память блоками по 4К, сколько процесс запросит - столько и получит, не больше (и кратно).
Ну вот. Если процесс 1 байт запросил, то выделит 4к на самом деле.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114218
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Ну вот. Если процесс 1 байт запросил, то выделит 4к на самом деле.
Это если напрямую у системы память просить.
А вообще еще есть прослойка в виде FastMM.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114221
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockвыделит 4к на самом деле.

На некоторых системах - 16. Меньшей пачкой физическая память на виртуальную
просто не маппится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114229
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
YuRockвыделит 4к на самом деле.

На некоторых системах - 16...
Это ж давно было. :) В MS DOS ещё, при работе с EMS.
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40114435
Andi_WEB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Погонял тестовое приложение с уничтожением неактивных TCP-клиентов. Мне кажется, стало значительно лучше. Около 12 часов жесткой прокачки данных, под конец сеанса приложение занимало менее 60 мб памяти (по диспетчеру).
...
Рейтинг: 0 / 0
Утечки памяти в приложении - FasMM, EurekaLog
    #40115230
svd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andi_WEB,

Когдато давным давно лет 6 назад решил переписать пару стандартных сокетов с заменой на Indy. Обнаружил утечку памяти в самих компонентах. Замена привела к декларируемому типу Integer. Так что ошибки есть еще и в сырцах.
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Утечки памяти в приложении - FasMM, EurekaLog
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]