Windows任务管理器可靠的工具来检测内存泄漏吗?

lyb*_*rko 1 delphi

如果创建了TObject,则必须在最后销毁它.在开发过程中,它发生在我身上,运行的应用程序在短时间内反应缓慢,我注意到,它耗尽了大量的内存.我在里面看到了它__CODE__.

我做了一些改变,但我仍然看到渐进的内存消耗.该应用程序在内存中有大约22000 Kb,并且在重复重绘之后,涉及创建和销毁对象,它上升到33000.

所以我的问题是,如果这是一个明确的标志,那么代码中的某个地方我没有正确地释放对象.还是有其他原因导致内存泄漏?是否有方法可以轻松调试此问题?

我总是非常注意以正确的方式创建和销毁对象,所以我没有看到明显的失败.它让我疯了......

感谢名单.

Kim*_*ers 5

通过将其添加到项目源代码,可以在调试模式下关闭时报告内存泄漏:

{$WARN SYMBOL_PLATFORM OFF}
ReportMemoryLeaksOnShutdown := DebugHook <> 0;
Run Code Online (Sandbox Code Playgroud)

转到项目>查看源以查找此内容并将上面的行放在Application.Initialize之前.它应该看起来像这样:

  begin
    {$WARN SYMBOL_PLATFORM OFF}
    ReportMemoryLeaksOnShutdown := DebugHook <> 0;
    {$WARN SYMBOL_PLATFORM ON}
    Application.Initialize;
    Application.MainFormOnTaskbar := True;
    Application.CreateForm(TfrmMain, frmMain);
    Application.Run;
  end.
Run Code Online (Sandbox Code Playgroud)

  • 将此与使用FastMM4或LeakCheck相结合,您可以获得有关分配callstack和东西的有用信息,而不仅仅是"15 x TFoo和4 x TBar的漏洞",只需打开`ReportMemoryLeaksOnShutdown`即可. (2认同)