9

多年来,我一直在不断地涉足 delphi,我一直想知道为什么最小化和恢复应用程序会导致它使用更少的内存?

例如,我使用的是 delphi 7,我创建了一个新项目,其中没有任何内容,但所有项目都以空白表单开头,然后按 F9 运行应用程序,然后查看应用程序的内存使用情况,它位于大约 3.5mb 然后我最小化应用程序,内存使用量下降到大约 760kb,然后我最终恢复应用程序,内存使用量回到大约 1.5mb,大约是第一次加载时的 1/2这一直让我很困惑是什么导致了这种情况发生,更重要的是无论如何都要使用一些指令启动应用程序,使其使用 1.5mb 的内存而不是通常使用的 3.5mb。

干杯,戴夫

4

3 回答 3

5

可能与 Windows 内存管理有关。用 windows 计算器尝试同样的事情,行为是一样的 :))

这里有一个答案: http: //support.microsoft.com/ ?kbid=293215 有些人有同样的问题: http ://digital.ni.com/public.nsf/allkb/9EA3D4258E037B8A8625763300434D4D

最好的祝福,

于 2010-07-26T11:32:54.353 回答
4

在这里,您可以找到Ian Martins 的非常清晰的解释。当应用程序最小化系统调用SetProcessWorkingSetSize过程来释放进程的非活动内存。

您可以将此代码添加到您的应用程序中。在 OnClick 按钮中,您可以执行以下操作:

procedure LiberarMemoria;
begin
  if Win32Platform = VER_PLATFORM_WIN32_NT then
    SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;

效果类似于最小化应用程序。如果您的应用程序执行某些任务最终使用了一大块内存,您可以使用这个小代码强制它在使用后释放。

问候

于 2010-07-26T11:44:23.380 回答
1

请参阅 Barry Kelly对此问题的回答。

于 2010-07-26T14:25:42.733 回答