Windows应用程序占用太多内存。有什么建议吗? Visual Studio 2008在Windows XP下使用C++的应用程序p>

Windows应用程序占用太多内存。有什么建议吗? Visual Studio 2008在Windows XP下使用C++的应用程序p>,c++,visual-studio,visual-c++,C++,Visual Studio,Visual C++,除了“始终删除新对象”建议之外,还有什么有用的建议吗 编辑:事实上,我正在寻找一些编程建议。假设您有内存泄漏,在购买/运行其他配置文件之前,有一个免费的解决方案可以解决这个问题,那就是UMDH。它可以检测大多数内存泄漏,如果这是你的情况 取决于您所说的“占用太多内存”是什么意思 A) 按设计,即需要加载或生成预期会导致问题的大型数据结构 在这种情况下,是i)物理内存太多,即硬盘开始交换页面而变慢,还是ii)地址空间太多,即无法分配,因为找不到内存中的漏洞 ii)考虑使用64位构建,考虑使用共享

除了“始终删除新对象”建议之外,还有什么有用的建议吗


编辑:事实上,我正在寻找一些编程建议。

假设您有内存泄漏,在购买/运行其他配置文件之前,有一个免费的解决方案可以解决这个问题,那就是UMDH。它可以检测大多数内存泄漏,如果这是你的情况

取决于您所说的“占用太多内存”是什么意思

A) 按设计,即需要加载或生成预期会导致问题的大型数据结构

在这种情况下,是i)物理内存太多,即硬盘开始交换页面而变慢,还是ii)地址空间太多,即无法分配,因为找不到内存中的漏洞

ii)考虑使用64位构建,考虑使用共享内存来存储大数据结构,谨防碎片化——尽早分配大缓冲区,将大数据结构分解成更小的

B) 它使用了大量的内存,让您感到惊讶

查找您的漏洞或bug-各种可用的探查器或visual studio内置的调试alloc挂钩。在计算缓冲区大小(特别是意外的int-wrap-around)时,您是否有任何错误的算法


使用智能指针管理删除。

购买更多内存?或者运行内存分析器。对这种情况给出一般性的建议是愚蠢的。找出内存泄漏的位置,然后修复它们。从您的问题中不清楚应用程序是在泄漏内存,还是因为需要同时在内存中保留大量数据而消耗大量内存?内存去了哪里?它是泄漏的还是实际使用的?你说的是物理内存还是虚拟内存?@Naveen:有什么区别?(显然,我是指Windows程序员,而不是一般情况下。)基本上,我的应用程序从MSMQ接收消息并将它们记录在数据库(SQL Server)中。@Chrys-您是否正在释放MQ资源以及未使用的Db资源?实际上,我的错误是我没有遵循上面写的建议(总是删除新对象)。谢谢你的建议。