Delphi 如何使用AQTime';使用大量内存的程序中的内存分配探查器?

Delphi 如何使用AQTime';使用大量内存的程序中的内存分配探查器?,delphi,aqtime,Delphi,Aqtime,我发现时间很难使用,因为它对原始程序的干扰太大了。例如,如果我有一个使用300MB ram的程序,我可以毫无问题地使用AQTime的分配分析器,并找出大部分内存的使用位置。但是我注意到,在AQTime下运行时,原始程序在分析时使用的内存更像1GB 现在我正试图减少一个使用1.4GB内存的程序的内存使用。如果我在AQTime下运行它,那么原始程序将使用所有2GB地址空间并崩溃。当然,我可以创建一个较小的测试数据集,并估计内存使用量将如何随完整的数据集扩展——但我之所以使用分析器,首先是为了避免这种

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

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

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

该应用程序是用Delphi2010编写的,我使用的是AQTime 6


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

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

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