【问题标题】:How can I monitor peak memory usage for a Delphi application?如何监控 Delphi 应用程序的峰值内存使用情况?
【发布时间】:2023-04-02 11:50:01
【问题描述】:

我刚刚结束了我的 Delphi 应用程序中的一次重大重构,并想比较构建之间的峰值内存使用情况。基本上我需要证明最新的重构比以前的构建占用更少的 RAM。由于应用程序发生了很大变化,因此很难确定一个等效的时间点来比较指标。比较的最佳方法是了解应用程序执行期间的最高内存消耗。例如,如果我的应用程序在整个持续时间内需要 1 MB 的 RAM,但在 1 毫秒内它需要 2 MB,我希望得到 2 MB 作为结果。

我开始使用 FastMM4,但我不确定它是否能满足我的需要。它可以是一个外部工具,也可以是我嵌入到我的应用程序中的东西(例如 FastMM4)。

【问题讨论】:

  • 听起来像是 Windows 内置性能监视器工具的工作。您可以将其设置为随着时间的推移,按进程或系统范围监控各种性能计数器,包括内存使用情况。
  • 内存消耗是一个非常相对的变量。如果您最小化应用程序,working set is actually trimmed... 也可能是 FastMM4 可能会保留更多内存空间,但实际上并未从硬件中分配它。我不会花太多时间来猜测几 MB 的内存消耗。只有几 GB,或者如果它开始在磁盘上交换,我会担心 - 在实践中它可能是内存泄漏。无论如何,Windows 本身就是一个记忆吞噬者。 :)
  • 峰值私有字节是要检查的裂痕
  • 理想情况下,您需要对完全相同的工作流程进行自动化测试,以便在不同版本之间进行比较并始终进行多项测试

标签: delphi memory


【解决方案1】:

您可以使用Process Explorer

右键单击顶部标题,然后使用 Select Columns 菜单并从 Process Memory 选项卡中检查 Peak Private Bytes

【讨论】:

    【解决方案2】:

    Process Explorer as recommended by dwrbudr 很好,但它缺乏我需要的粒度,所以我最终在每个构建的整个流程中使用 FastMM4 到 get the memory usage。我只是记录了这些值,然后手动比较了演变。

    【讨论】:

      猜你喜欢
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多