|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Добрый день! Продолжаю эксперименты с ВЕБ-Сокетами. Озадачился такой проблемой. Программа (WIN32) после старта занимает в диспетчере около 30 мб. Сетевой обмен через сокеты не очень интенсивный - примерно 2 кб в секунду. Спустя несколько часов, буквально за пару минут, объем памяти, занимаемой программой плавно увеличивается до 130 мб. Случано заметил, т.к. в этот момент смотрел в диспетчере. Буквально, каждую секунду добавлялся лишний мегабайт. Потом несколько часов все работало нормально. Памямть не росла. Это Винда решила подкинуть памяти от щедрот своих для какой-то оптимизации обмена или это все же косяки где то, как думаете? Вот что дает FastMM c ReportMemoryLeaksOnShutdown := True; (скрин). Выглядит, конечно, неприятно, но даже при перемножении в уме никак не тянет на лишних 100 мб Поставил триал EurekaLog. И, к своему удивлению, ничего внятного от него пока получить не могу. Объем экзешника увеличился заментно, опции VCL и прочее выбраны, но ни в логе ничего нет, и при закрытии приложения никаких окон не появлятся. ReportMemoryLeaksOnShutdown := True; сначала закоментировал, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 12:43 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Andi_WEB Выглядит, конечно, неприятно, но даже при перемножении в уме никак не тянет на лишних 100 мб Это оно просто не пишет память сожранную "внутри" этих классов. Перечисляет только "корневые" классы, так сказать. Поставил триал EurekaLog. И, к своему удивлению, ничего внятного от него пока получить не могу. Объем экзешника увеличился заментно, опции VCL и прочее выбраны, но ни в логе ничего нет, и при закрытии приложения никаких окон не появлятся. ReportMemoryLeaksOnShutdown := True; сначала закоментировал, конечно. Лучше MadExcept поставь. И проще пользоваться и без триала. Ну оно за тебя утечки не поправит. И так видно, что у тебя компоненты не удаляются после использования. Например 236 х TIdTCPClient. А где они создаются думаю ты и так знаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 12:51 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
> Лучше MadExcept поставь. И проще пользоваться и без триала. > Ну оно за тебя утечки не поправит. И так видно, что у тебя компоненты не удаляются после использования. Согласен, спасибо. Буду копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 12:55 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Чтоб поймать утечки, одного FastMM достаточно. Только учитывай, что если оно в режиме полной отладки, то куча намного больше за счет отладочной инфы. Ну и фаст может не отдавать системе однажды выделенную память, запасая ее у себя на будущее ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:34 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Andi_WEB Спустя несколько часов, буквально за пару минут, объем памяти, занимаемой программой плавно увеличивается до 130 мб. Случано заметил, т.к. в этот момент смотрел в диспетчере. Буквально, каждую секунду добавлялся лишний мегабайт. (несколько часов) * 3600 мегабайт. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:51 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Fr0sT-BrutalНу и фаст может не отдавать системе однажды выделенную память, запасая ее у себя на будущее Ни один ММ не отдаёт системе память сразу. Фаст не исключение. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 13:56 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Но все же, почему EurekaLog вообобще ничего не показывает? Хотя бы из интереса хотелось взглянуть. Исполняемый файл увеличился, опция для работы с VCL приложением стоит - а ни влогах (сменил путь на боле простой, на диске D), ни окна при закрытии приложения не появляется. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:09 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
> Если мегабайт в секунду, то было бы... Имелось в виду, на мегабайт в секунду начинает увеличиваться объем потребляемой памяти по диспетчеру. До этого - около 30 мегабайт на протяжении пары часов. Потом резко увеличиваетсмя до 130 мб в течении короткого промежутка времени. Вот прям случайно это земетил, совпадение. А потом опять несколько часов работает на 130 мб... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:13 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Andi_WEB Но все же, почему EurekaLog вообобще ничего не показывает? Хотя бы из интереса хотелось взглянуть. Исполняемый файл увеличился, опция для работы с VCL приложением стоит - а ни влогах (сменил путь на боле простой, на диске D), ни окна при закрытии приложения не появляется. Сейчас придет Алексей, и мягко поинтересуется, а что же там в опциях-то, в частности включена ли вообще галка про Leaks во вкладке Memory problems, и остальным из этого включаемого подраздела. И да, там еще и вкладка Resource Leaks есть, что с ней-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:31 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
По умолчанию в EurekaLog включена опция "Active only when running under debugger". P.S. Но вообще я большого смысла не вижу использовать трейсеры исключений для локальной отладки. У них цель другая - сообщить о проблеме с полей. Отладочный же инструмент типа FastMM в FullDebugMode всегда покажет больше деталей, потому что может использовать более тяжёлую артиллерию. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 14:37 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
> Отладочный же инструмент типа FastMM в FullDebugMode Добрый день. Но у меня D2006. Там он, кажется, порезанный. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 15:25 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Там его вообще нет. С лёгкостью устанавливается полный. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 15:32 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Andi_WEB, ну ты по названию классов "утекающих" объектов посмотри хоть. Как ты их создаешь и где удаляешь. Неужели трудно. TWebSocket, TidTCPClient. У тебя же не миллион мест в коде, где они встречаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 15:53 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Спасибо, уважаемые участники. Опции Leaks сам нашел, как-то но наитию. А вот Active only when running under debugger проглядел, каюсь. Но вот что интересно - окно со ссылкой при закрытии приложения стало появляться, но на долю секунды. Попасть в него тот еще квест. Может, там еще секреты есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 15:56 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
rgreat Лучше MadExcept поставь. +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 16:05 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Такого точно быть не должно. Есть ненулевая вероятность, что возникает какое-то исключение при попытке показать отчёт. Под отладчиком если запустить - уведомление об исключении будут? Ещё можно включить "Use Debug DCUs" и передать ключ командной строки --el_debug . При этом будет создан .csl файл в папке с .exe, куда будет записано всё, что происходит в приложении. Я, правда, не уверен, что поможет первое или второе, поскольку утечки проверяются, когда в приложении уже всё убито - в том числе поддержка исключений. Скорее всего, тут надо по шагам смотреть. Но если диалог появился, то файл отчёта должен быть уже создан. Он есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 16:06 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
> Есть ненулевая вероятность, что возникает какое-то исключение при попытке показать отчёт. Похоже, исключение возникает при закрытии моего приложения. Раньше его не было видно. Если умпеть нажать на окошко Еврики, то потом с ним можно работать. Разбираюсь дальше, что к чему, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 16:13 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Fr0sT-BrutalНу и фаст может не отдавать системе однажды выделенную память, запасая ее у себя на будущее Ни один ММ не отдаёт системе память сразу. Фаст не исключение. Я не про сразу, а про вообще ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 17:06 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Andi_WEB, Расходуемая память не обязательно является утечкой. Если классы копятся в памяти но, но будут освобождены при выходе, то они не будут показаны как утечка. Нужно выводить статистику в момент работы приложения. Например deleaker умеет https://www.deleaker.com Или свою статистику считать, если подозрительных классов немного, то это элементарно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 19:00 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
swame2 Если классы копятся в памяти но, но будут освобождены при выходе, то они не будут показаны как утечка. Нужно выводить статистику в момент работы приложения. Со времен WinNT все ресурсы освобождаются при завершении процесса. :) Если классу в коде явно не делается Free/Destroy он будет показан как утечка при выходе. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 19:09 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
swame2 Andi_WEB, Расходуемая память не обязательно является утечкой. Если классы копятся в памяти но, но будут освобождены при выходе, то они не будут показаны как утечка. Нужно выводить статистику в момент работы приложения. Например deleaker умеет https://www.deleaker.com Или свою статистику считать, если подозрительных классов немного, то это элементарно. EL тоже умеет, но для этого надо чуток кода + это небыстро (совсем небыстро!) + потом надо постобработкой группировать обьекты - родная группировка как-то странно работает (съедает обьекты вроде, не помню уже подробностей, давно копал). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 19:21 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
rgreat Со времен WinNT все ресурсы освобождаются при завершении процесса. :) Если классу в коде явно не делается Free/Destroy он будет показан как утечка при выходе. Можно плодить кучу экземпляров с овнером в виде главной формы или дата модуля, память расходуется, а утечки при выходе нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 19:54 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Vizit0r EL тоже умеет, но для этого надо чуток кода + это небыстро (совсем небыстро!) + потом надо постобработкой группировать обьекты - родная группировка как-то странно работает (съедает обьекты вроде, не помню уже подробностей, давно копал). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 21:27 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
istrebitel rgreat Со времен WinNT все ресурсы освобождаются при завершении процесса. :) Если классу в коде явно не делается Free/Destroy он будет показан как утечка при выходе. Можно плодить кучу экземпляров с овнером в виде главной формы или дата модуля, память расходуется, а утечки при выходе нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2021, 23:15 |
|
Утечки памяти в приложении - FasMM, EurekaLog
|
|||
---|---|---|---|
#18+
Andi_WEB > Если мегабайт в секунду, то было бы... Имелось в виду, на мегабайт в секунду начинает увеличиваться объем потребляемой памяти по диспетчеру. До этого - около 30 мегабайт на протяжении пары часов. Потом резко увеличиваетсмя до 130 мб в течении короткого промежутка времени. Вот прям случайно это земетил, совпадение. А потом опять несколько часов работает на 130 мб... если утекают сущности, связанные с коннектом, то при массовых реконнектах может быть именно такая картинка освобождается ли память при штатном завершении websocket соединения? закрытии tcp коннекта без отправки вебсоктного фрейма close? при обрыве соединения? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 07:00 |
|
|
start [/forum/topic.php?fid=58&msg=40114009&tid=2036835]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 278ms |
total: | 423ms |
0 / 0 |