代码的哪一部分增加了内存使用
What part of code increases memory usage?
我有一个服务器应用程序(与QTcpServer)。VLD内存泄漏检查显示没有内存泄漏。但是当我从客户端向服务器发送命令时,任务管理器显示内存增量。因此,服务器将耗尽内存。我怎样才能找到导致这种问题的代码部分?由于
在接受客户端时做一些"工作",显然您的内存使用量会增加。重要的是,当您完成"工作"时,您释放了您分配的对象。如果这些是QObject派生的对象,Qt将在程序退出时跟踪并删除它们,因此确实不会显示内存泄漏,但是如果您在服务器启动并运行时不删除它们,它们将留在那里。
你可以做一些事情来减少你的内存使用,比如不要在堆上创建对象,而是在堆栈上(这些对象会自动消失)尝试使用尽可能少的内存分配,在不需要的时候立即释放分配的内存,等等…
也许通过分享一些代码(如果它不是非常大)将帮助我们确定一些我们可以改进的关于内存使用的点
填写这些问题,我想我能帮助你:
- 当客户端连接时内存增加?Y/N
- 当客户端断开连接时内存减少?Y/N
- 3个客户端连接/断开后,您处于空闲状态,内存增加了吗?
- 连接1个客户端,发送命令,然后断开连接。记忆增加了吗?
如果最后一个是YES,尝试隔离使内存增加的命令。
如果所有命令都在增加内存使用,那么处理命令调度的代码正在泄漏。
如果只有一个命令是泄漏的,那么该命令是泄漏的。
一般性问题:
- 你指定一个父每个Qt对象你分配使用
new
,你不与delete
释放?如果没有,那是你的泄漏。 - 使用QList还是QHashMap ?如果是,检查你是否在需要时清理/整理它们
最后,您可以尝试在您分配的非qt对象上使用HP垃圾收集器。
相关文章:
- 内存增加和字符串流?
- ActiveMQ使用者的内存使用量在onMessage调用后不断增加
- SQLite C/C++ 接口:将数据插入表时内存增加
- 为什么将鼠标悬停在静态 Win32 控件上会增加内存并删除我的 GUI?
- 标准::矢量增加峰值内存
- 打开文件*以增加内存空间
- 使用新线程池而无需重新启动的新线程池后,Jemalloc的内存大大增加
- 为什么内存访问时间远远超过CPU缓存大小时会增加
- C :当居民记忆缓慢增加时,是否存在内存泄漏
- 程序C++中的虚拟内存大小增加
- FFMPEG 内存增加
- 如何增加机器的内存和CPU消耗
- 为什么在保留向量中插入空结构会增加内存
- 为什么 q网页测试的内存一直在增加?
- Win32 C++中的DrawText会增加内存使用率
- 内存占用增加
- 当使用动态数组时,循环中的内存使用量不断增加.(C++)
- 内存资源不停地增加
- 我的应用程序内存增加
- 调用JNI_CreateJavaVM函数后,应用程序内存增加了千兆字节