gpt4 book ai didi

delphi - 如何在使用大量内存的程序中使用 AQTime 的内存分配分析器?

转载 作者:行者123 更新时间:2023-12-03 18:51:34 28 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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

关于delphi - 如何在使用大量内存的程序中使用 AQTime 的内存分配分析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4643530/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com