【发布时间】:2011-05-26 17:25:01
【问题描述】:
我有一个 MDI 程序。启动时需要 2-3MB 的 RAM。然后,在这个程序中,我创建了大约 260 个 MDI 子窗口(每个都有一个 TStringGrid、一个位图和一些其他控件)并显示一些数据。该应用程序需要大约 500MB 来加载所有这些窗口。如果我手动关闭每个 MDI 子项,应用程序仍然使用 160MB 的 RAM。为什么它不会恢复到几 MB 的 RAM?我应该担心这个吗?对于只有 1GB 或 RAM 的系统来说,160MB 实在是太多了!!
注意:我使用任务管理器中的 WORKING SET 列来查看 RAM 统计信息。也许我需要一个更好的工具来读取 RAM 利用率。 (私有工作集只是比工作集小一点)。
这不是泄漏!
FastMM(设置为积极)表示关闭程序时没有内存泄漏。请参阅我的回答帖子以获取更多证明它不是泄漏的证据。
我发布东西
很多人告诉我,关闭子窗口只会隐藏它。我知道。我使用“Action:= caFree”来实际发布表单。每个表单负责释放它所持有的控件。
回答
我发现 FastMM 对此负责。请参阅我在下面发布的答案。
Delphi 7,Win 7 32 位
类似帖子:
Can memory be cleaned up?
When to call SetProcessWorkingSetSize? (Convincing the memory manager to release the memory)
【问题讨论】:
-
目前无法回答这个问题。
-
你怎么知道你的应用程序仍在使用 160MB 或 RAM?
-
你好安德烈亚斯。如果您需要更多数据,请告诉我。
-
a) 工作集 堆分配 b) 任务管理器显示瞬时值,而不是统计数据
标签: delphi