如何通过使用 TFileOpenDialog 回收内存?

How can I reclaim memory from using TFileOpenDialog?

在一个简单的 Delphi VCL 应用程序中,窗体上有一个按钮和以下 OnButton 事件代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  OpenDialog : TFileOpenDialog;
begin
  OpenDialog := TFileOpenDialog.Create(nil);
  try
    OpenDialog.Options := OpenDialog.Options + [fdoPickFolders];
    if not OpenDialog.Execute then
      exit;
  finally
    OpenDialog.Free;
  end;
end;

当我执行对话框时,我的应用程序内存使用量增加了一倍,但在我 OpenDialog.Free 之后内存没有释放。(我正在使用 ProcessExplorer 查看我的应用程序使用了多少内存)

我怎样才能使我释放对象后我的内存使用 returns 恢复到调用对话框之前的状态?

这是正常操作。内存管理器通常不会 return 内存到系统,而是将其缓存以备后用。此外,第一次显示文件对话框时加载的模块会在您的进程中保持加载状态。

完全有可能是系统缓存了其他资源,以提高后续使用文件对话框的性能。

此行为可带来更好的性能。如果您能够强制将内存returned 到系统,您的程序将执行得更慢。

您的代码是正确的。没有泄漏。没有问题要你解决。