Qt内存使用情况检查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt内存使用情况检查相关的知识,希望对你有一定的参考价值。

我正在研究用Qt 4.8(C ++)编写的遗留应用程序。完成更改后,我进行了一些压力测试。我担心他们的结果。这些是我的发现:

  • 没有压力测试时,RssAnon参数(我在Linux上工作)会按时增加
  • 通过压力测试,RssAnon增长更快(在10:05和10:20之间)

RssAnon statistics (from /proc/*/status)

我尽了最大努力避免使用动态内存,但是我知道,Qt在幕后大量使用它。我怀疑呼叫信号/插槽机制会导致这种快速增长。在测试期间,我在线程之间传递了对静态对象的引用,并将其放入基于C数组的QAbstractTableModel中。当然,每次更改我都会调用begin / endInsert / RemoveRows。

我的问题是,还有没有更可靠的方法来检查是否没有长期记忆问题?我使用了valgrind,但是它并没有显示经过测试的代码的问题。此外,它可能不是正确的工具-退出时可能会释放所有内容,但我想避免在运行时不断增加内存。也许我应该从procfs检查其他参数?

答案

同时,我使用massif监视内存使用情况-这是正确的工具。我发现begin / endInsert / RemoveRows方法会在此位置导致大量内存消耗:

  • QAccessible :: queryAccessibleInterace
  • QHashData :: allocateNode

关于该问题,答案是-Massif-并查看结果Massif-visualizer

要删除此“泄漏”,我必须删除beginInsertRows函数。

以上是关于Qt内存使用情况检查的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 Android 应用的内存使用情况

检查LINUX内存使用情况

如何检查 Java 中的 CPU 和内存使用情况?

检查MySQL内存使用情况

python二级练习和考试复习(检查内存使用情况)

检查交换内存使用情况