Qt, увеличение памяти с mtrace

У нас есть многопоточное приложение C++ qt (4.8.1) на встроенной платформе linux arm со многими потомками qgraphicsitem. При вызове их метода update() mtrace показывает прирост использования памяти, около 16-18 байт на каждое обновление. Наблюдая за приложениями VSZ (с помощью ps или топовых команд), он также постоянно увеличивается. Если мы запускаем приложение в valgrind --tool=memcheck, и приложение нормально завершается, мы не видим "точно потерянные" блоки.

Если мы закомментируем вызовы update (), mtrace больше не отображает неосвобожденные области.

Возможно ли, что в Qt есть "все еще доступные" и постоянно растущие блоки памяти, перераспределенные области, векторы STL и т. Д.? Если да, то как мы можем их периодически очищать?

Структура программы выглядит следующим образом:

int main( int argc, char* argv[] ) {
  // new thread creations, initializations, qt object creations
  ...
  mtrace();
  while ( runEnabled ) {
    // this is where new events arrive, and the graphics is updated
    ...
  }
  muntrace();

  // cleanups, desctructions
  ...
}

Таким образом, mtrace отслеживает только активную часть, которая должна работать месяцами в нашей встроенной среде.

Спасибо Даниэль

0 ответов

Другие вопросы по тегам