【问题标题】:How to use AQTime's memory allocation profiler in a program that uses a large amount of memory?如何在使用大量内存的程序中使用 AQTime 的内存分配分析器?
【发布时间】:2011-01-10 03:46:16
【问题描述】:

我发现 AQTime 很难使用,因为它过多地干扰了原始程序。例如,如果我有一个使用 300MB 内存的程序,我可以毫无问题地使用 AQTime 的分配分析器,并找出大部分内存正在使用的位置。但是我注意到在 AQTime 下运行时,原始程序在对其进行分析时使用更像 1GB。

现在我正在尝试减少使用 1.4GB 内存的程序中的内存使用量。如果我在 AQTime 下运行它,那么原始程序会使用所有 2GB 地址空间并崩溃。我当然可以发明一组较小的测试数据,并估计内存使用量将如何随完整数据集扩展 - 但我首先使用分析器的原因是为了避免这种猜测。

我已经将 AQTime 设置为“收集堆栈信息 - 无”,并且所有与检查内存完整性有关的复选框都已关闭,并且我尝试将要分析的区域限制为仅几个类,但这没有t 似乎改善了什么。有没有办法使用 AQTime 产生更小的开销?或者如果做不到这一点,还有什么其他方法可以很好地了解正在使用的内存?

该应用是用 Delphi 2010 编写的,我使用的是 AQTime 6。

注意:除了增加的内存使用量之外,在 AQTime 下运行会大大降低应用程序的速度,使整个练习不仅不可能而且也不切实际:-P

【问题讨论】:

    标签: delphi aqtime


    【解决方案1】:

    AFAIK 分配分析器将跟踪内存块分配,而不管分析区域如何。分析区域用于跟踪类实例化。当然,对分配大量内存的应用程序进行内存分析是一个问题,您可以尝试使用 LARGE_ADRESS_AWARE 标志和 /3GB 引导开关,或者使用 64 位系统(只要您有至少 4GB 的内存或更多)。您还可以在应用程序崩溃之前拍摄应用程序状态的快照,以查看内存分配的位置。分析需要时间,无论如何,您可能需要让它运行一段时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-03
      • 1970-01-01
      • 2011-11-02
      • 2016-11-24
      • 2012-12-28
      • 2012-02-08
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多