Как видно из названия, я использую Wt для создания форума. Предполагается, что он будет частью более крупного проекта (и в то же время он дает мне возможность лучше изучить Wt, прежде чем перейти к самой сложной части проекта).
Проблема в том, что когда я запускаю сервер, требуется около 1,5 ГБ.
Я не использую в настоящее время изображения, медиа или другие варианты. Только «нормальные» (имеется в виду html + text + javascript) виджеты, объединяющие их для создания более сложных виджетов, DBO и множества шаблонов.
Звучит ли такое использование памяти как нормальное для приложений WT? Если нет, есть ли способ профилировать использование памяти функциями, структурами данных и кодом (с процентами и т. Д., Как мы можем сделать с профилировщиком времени)?
Видимо, по словам Вальгринда, у меня нет утечек.
== 13061 == Memcheck, детектор ошибок памяти
== 13061 == Copyright (C) 2002-2015 и GNU GPL’d, Джулиан Сьюард и соавт.
== 13061 == Использование Valgrind-3.11.0 и LibVEX; перезапустить с -h для получения информации об авторских правах
== 13061 == Команда: ./GameServer —docroot =. —http-адрес 0.0.0.0 —http-порт 8080
== 13061 == PID родителя: 13060
== 13061 ==
== 13061 ==
== 13061 == РЕЗЮМЕ КАРТЫ:
== 13061 == используется на выходе: 111 172 байта в 243 блоках
== 13061 == общее использование кучи: 271 492 распределения, 271 249 освобождений, 1 545 796 300 байт
== 13061 ==
== 13061 == РЕЗЮМЕ УТЕЧКИ:
== 13061 == определенно потеряно: 0 байтов в 0 блоках
== 13061 == косвенно потеряно: 0 байтов в 0 блоках
== 13061 == возможно потеряно: 0 байтов в 0 блоках
== 13061 == все еще достижимо: 109 820 байт в 225 блоках
== 13061 == из которых достижимы с помощью эвристики:
== 13061 == newarray: 1536 байтов в 16 блоках
== 13061 == подавлено: 1352 байта в 18 блоках
== 13061 == Доступные блоки (те, на которые был найден указатель) не отображаются.
== 13061 == Чтобы увидеть их, запустите снова: —leak-check = full —show-leak-types = all
== 13061 ==
== 13061 == Для подсчета обнаруженных и подавленных ошибок, перезапустите с: -v
== 13061 == РЕЗЮМЕ ОШИБОК: 0 ошибок из 0 контекстов (исключено: 18 из 18)
Отредактируйте: чтобы ответить на вопрос Хейта: это действительно начинается с такого большого использования. Хотя я действительно полностью и широко использую контейнеры для мгновенного сохранения данных (например, из запросов к БД, но ничего такого, что может оправдать такой объем памяти, поскольку весь файл БД на данный момент занимает всего 80 КБ), использование памяти не не увеличивается со временем, а увеличение со вторым пользователем незначительно (системный монитор подтверждает 1,4 ГБ в целом, после того, как я несколько раз обновил веб-страницу из user_1 и после того, как я вошел в систему с user_2).
Edit2: используя valgrind с инструментом массива, я обнаружил проблему: это была другая часть приложения совершенно не связано с WT.
В порядке, проблема не была связана с WT.
Как предложил Хайт в комментариях, я использовал valgrind с параметром массива, создав небольшой файл .sh (я использую Ubuntu) со следующей строкой:
valgrind —tool = массив — trace-children = yes —num-вызывающих = 500
—log-file = massif.txt ./WebServer —docroot =. —http-адрес 0.0.0.0 —http-порт 8080
Где «WebServer» — это имя приложения, а следующие за ним параметры относятся к wt-серверам, а проблема была вызвана другой частью проекта, которую я забыл включить до того момента, когда заметил, что память поменяется.
Решаемые.
Других решений пока нет …