Delphi - 使用 10.2.1 重新编译应用程序会导致内存泄漏吗?

标签 delphi memory-leaks delphi-10.2-tokyo

我刚刚安装了 Delphi 10.2 Release 1。当我重新编译我的应用程序并运行它们时,我遇到了很多内存泄漏。我在 10.2 中没有出现内存泄漏(没有更新)。我也没有对代码进行任何更改。

为了验证,我创建了一个简单的空白应用程序,并在表单上放置了一些组件。没有代码。运行应用程序并报告内存泄漏。 Memory leaks from the sample application

我想强调这一点(如果只是作为升级前的警告)。

我的问题:

  1. 还有其他人看到过这个问题吗?
  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/

相关文章:

ios - Objective-C : GestureRecognizer in ViewController --> retain cycle?

JVectorMap 的 Javascript 内存泄漏

Delphi 10.2 - 如何从欢迎页面删除即将举行的事件面板?

delphi - 从仓库中更新代码后,Delphi Tokyo 10.2需要重建整个项目

delphi - 在应用程序上创建两次的表单 Form Create 事件

delphi - 何时为静态数组评估长度?

c# - C# WinForms 应用程序中的应用程序范围的消息处理程序

vb.net - 将 delphi 的 System.Copy 转换为 .net

c++ - 在 C++ 中新建/删除奇怪的内存泄漏

Delphi 将项目添加到 cxgrid 上的 cxcombobox,而不使用列的 oninitpopup 事件