Qt内存使用情况检查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt内存使用情况检查相关的知识,希望对你有一定的参考价值。
我正在研究用Qt 4.8(C ++)编写的遗留应用程序。完成更改后,我进行了一些压力测试。我担心他们的结果。这些是我的发现:
- 没有压力测试时,RssAnon参数(我在Linux上工作)会按时增加
- 通过压力测试,RssAnon增长更快(在10:05和10:20之间)
我尽了最大努力避免使用动态内存,但是我知道,Qt在幕后大量使用它。我怀疑呼叫信号/插槽机制会导致这种快速增长。在测试期间,我在线程之间传递了对静态对象的引用,并将其放入基于C数组的QAbstractTableModel中。当然,每次更改我都会调用begin / endInsert / RemoveRows。
我的问题是,还有没有更可靠的方法来检查是否没有长期记忆问题?我使用了valgrind,但是它并没有显示经过测试的代码的问题。此外,它可能不是正确的工具-退出时可能会释放所有内容,但我想避免在运行时不断增加内存。也许我应该从procfs检查其他参数?
答案
同时,我使用massif监视内存使用情况-这是正确的工具。我发现begin / endInsert / RemoveRows方法会在此位置导致大量内存消耗:
- QAccessible :: queryAccessibleInterace
- QHashData :: allocateNode
关于该问题,答案是-Massif-并查看结果Massif-visualizer。
要删除此“泄漏”,我必须删除beginInsertRows函数。
以上是关于Qt内存使用情况检查的主要内容,如果未能解决你的问题,请参考以下文章