在一个简单的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来查看我的应用程序正在使用多少内存)。如何做到这一点,以便在释放对象之后,我的内存使用率恢复为调用对话框之前的状态?
最佳答案
这是正常操作。内存管理器通常不将内存返回给系统,而是将其缓存起来供以后重复使用。此外,第一次显示文件对话框时加载的模块仍在您的进程中加载。
系统完全有可能缓存其他资源,以提高文件对话框后续使用的性能。
此行为导致更好的性能。如果您能够强制将内存返回给系统,则您的程序将执行得更慢。
您的代码是正确的。没有泄漏。没有问题可以解决。