寻找的策略或工具;“无泄漏”;Delphi中的内存使用问题?
一个旧的应用程序在服务器更新后开始大量消耗内存。在程序挂起之前,内存使用似乎会超出限制 根据FastMM4和EurekaLog,并没有内存泄漏(28字节除外),所以我假设当应用程序关闭时,所有内存都被释放 有没有适合追踪这种记忆问题的工具或策略寻找的策略或工具;“无泄漏”;Delphi中的内存使用问题?,delphi,memory-management,delphi-2006,Delphi,Memory Management,Delphi 2006,一个旧的应用程序在服务器更新后开始大量消耗内存。在程序挂起之前,内存使用似乎会超出限制 根据FastMM4和EurekaLog,并没有内存泄漏(28字节除外),所以我假设当应用程序关闭时,所有内存都被释放 有没有适合追踪这种记忆问题的工具或策略 不断增长的内存消耗是一个应用程序问题。它不是一个可以发现FastMM4或EurekaLog的bug。从他们的角度来看,应用程序只是正确地使用内存 使用AQTime、MemProof(很难找到,D7是最新支持的版本(?)、SleuthQA(类似于MemPr
较小的功能可以通过编写大量跟踪消息或使用FastMM完全调试模式手动拼凑在一起。如果您可以将内存使用情况的完整转储写入一个非常大的文件中,那么您就可以编写一些工具来解析并创建摘要。在本例中,我对FastMM的问题是,您将淹没在详细信息中,无法准确提取帮助您了解情况的摘要信息。因此,您可以尝试编写自己的工具来总结内存使用情况。在一个应用程序中,我使用了一系列我知道会占用大量内存的组件,我在应用程序中编写了一个对话框,显示了这些大内存块数据对象当前的内存使用情况 你有没有想过导致IDE。。。太大了 在我的情况下(2GB内存),我做下一个。。。 1.打开IDE 2.让它最小化近六个小时 3.查看物理内存的使用情况 结果是: 当IDE被关闭时(记住我也做了最小化的测试),它的RAM越来越多。。。直到没有更多的内存可用。 它获得所有2GB RAM+所有页面文件硬盘空间(我将其配置为4GB的mas) 在不到六个小时内(在IDE上什么都不做),它尝试使用超过6GB的内存 这称为IDE引起的内存泄漏。。。我不在IDE上键入任何字母,不编译任何东西,甚至不打开任何项目。。。只需打开IDE并最小化它。。。离开计算机6个小时左右不做任何事情,IDE将消耗6GB内存 当然,在那之后,IDE会以SystemOutOfMemory的恼人消息开始。。。我必须杀了它。。。然后所有6GB都被释放 这到底什么时候能修好 请注意,我已经应用了所有补丁,我也在没有应用每个补丁/修补程序的情况下进行了测试,等等 我得到的最好的结果就是在工具上取消了一些选项,比如在坏代码下面加下划线的选项等等。。。那他妈的为什么这个选择会有任何影响。。。我没有在IDE上键入任何内容(在测试中)。。。如果我把它解封,内存泄漏就会大大减少 当然,如果我使用IDE(在打开的项目上编写代码),甚至没有编译/运行它。。。事情变得更糟了。。。在不到一个小时的时间内可以达到高达6GB的内存泄漏,有时在复制/粘贴源代码15分钟后发生 似乎在短时间内不会有解决方案 所以我找到了下一个完美的解决方案: -关闭IDE,每15分钟或更短时间重新打开一次
丑陋的解决方案,我知道。。。但它是有效的 自2012年9月以来,有一种非常简单而舒适的方法可以找到这种类型的“仅运行时”内存泄漏 FastMM4991引入了一种新方法,
LogMemoryManager状态文件
:
添加了LogMemoryManager状态文件调用。此调用记录以下内容的摘要:
文件的内存管理器状态:总分配内存、开销、,
效率,以及按类和字符串类型划分的分配内存的细目。
此调用可能有助于捕获不一定泄漏但
不要逗留太久
要在运行时发现泄漏,您只需要以下步骤