我们有一个相当复杂的Delphi应用程序,它使用.NET程序集。 我们使用FastMM作为我们的内存管理器。Delphi Windows桌面应用程序 - > 513 MB内存使用启动 - > 32.1 MB后50分钟的空闲状态
我们已经遇到了EOutOfMemory异常。所以我一直在调查这一点。我们怀疑我们在Delphi对象之间有一些循环引用。或者也许一些.NET对象持有对Delphi对象的引用,从而阻止它们被释放。
到目前为止,我还没有发现任何可以改变的事情,这真的令人沮丧,因为显然我们在某个地方有问题。
但今天,我凭借纯粹的机会发现了一些东西。 当我们的应用程序启动任务管理器报告约。 513 MB正在使用的内存。 我刚刚启动它,但不得不离开午餐。 当我回来时,偶然发现应用程序现在只用了75 MB。 奇怪我以为,一定是坠毁或我假设的东西。不,完全没有,应用程序运行完美。 我做了什么 - >什么都没有。让它闲置。 我们的应用程序是一个Windows桌面应用程序。在空闲状态下没有太多的事情正在进行。
于是我开始进一步研究。 它是可重复的。随着时间的推移,内存消耗开始大幅下降。 后约。 50分钟已经达到32.1 MB!
我已经监视了.NET垃圾收集器性能计数器,并没有什么大的变化。因此,我怀疑问题在德尔福方面 - > FastMM上的哪一点。
虽然我不是FastMM的专家。我确信并且FullDebugMode未启用。 有没有其他人经历过这样的事情? 任何提示/想法FastMM内可能配置错误?
非常感谢!
@DavidHeffernan你似乎有很多关于Delphi-内存管理器的经验。 :-)。如果您有任何类似的经验,您可以发表评论,非常感谢。谢谢! – santiagoIT
您无法在此处向特定用户提出问题,并且您无法使用@符号对他们进行ping操作,除非他们先评论或者您正在评论他们的答案。这不是社交媒体网站,您也不会从您的首选用户那里获得个人技术支持。 –
@KenWhite感谢您的信息!很高兴知道。希望他会遇到这个问题。我从其他SO问题中知道David使用他自己的MemoryManager并尝试了几次。所以他的投入会很有价值。 – santiagoIT