Qt,内存随mtrace而增加

时间:2013-09-11 14:09:56

标签: c++ qt4 valgrind mtrace

我们在嵌入式arm linux平台上有一个多线程c ++ qt(4.8.1)应用程序,它有许多qgraphicsitem后代。调用update()方法时,mtrace显示增量内存使用量,每次更新时大约16-18个字节。观察应用程序VSZ(使用ps或top命令),它也会不断递增。如果我们在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 个答案:

没有答案