我刚刚安装了 Delphi 10.2 Release 1。当我重新编译我的应用程序并运行它们时,我遇到了很多内存泄漏。我在 10.2 中没有出现内存泄漏(没有更新)。我也没有对代码进行任何更改。
为了验证,我创建了一个简单的空白应用程序,并在表单上放置了一些组件。没有代码。运行应用程序并报告内存泄漏。
我想强调这一点(如果只是作为升级前的警告)。
我的问题:
- 还有其他人看到过这个问题吗?
- 我需要或可以采取什么措施来解决这个问题?
注意:我已在质量门户上记录了一个问题,以防万一这是一个真正的问题:https://quality.embarcadero.com/browse/RSP-18774 。在这张票中,我还附上了示例应用程序。
最佳答案
经过一番调查,我发现在 TStyledControl.KillResourceLink
中传递给 TThread.CurrentThread.ForceQueue
的回调永远不会执行,因为在任何线程可以处理它们之前,应用程序正在结束,TThread
类析构函数正在销毁仍有未处理回调的列表。
我通过在 FMX.Forms.DoneApplication
末尾添加对 CheckSynchronize
的调用解决了这个问题,这强制执行回调,从而解决了巨大的内存泄漏问题。
我不知道这是否是该问题的正确解决方案,但它解决了报告的内存泄漏问题。
关于Delphi - 使用 10.2.1 重新编译应用程序会导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45588741/