我发现AQTime难以使用,因为它过多地干扰了原始程序。如果我有一个使用例如300MB ram的程序,我可以毫无问题地使用AQTime的分配分析器,并找出大部分内存的使用位置。但是我注意到在AQTime下运行,原始程序在被分析时使用的更像是1GB。
现在我正在尝试减少使用1.4GB内存的程序中的内存使用量。如果我在AQTime下运行它,那么原始程序将使用所有2GB地址空间和崩溃。我当然可以发明一组较小的测试数据并估计内存使用量如何随完整数据集扩展 - 但我首先使用分析器的原因是试图避免这种猜测。
我已经将AQTime设置为'收集堆栈信息 - 无',并且关闭了检查内存完整性的所有复选框,并且我已经尝试将被分析的区域限制为几个类,但这并不是'似乎改善了一切。有没有办法使用AQTime产生较小的开销?或者失败了,有什么其他方法可以很好地了解正在使用的内存?
该应用程序是用Delphi 2010编写的,我正在使用AQTime 6。
注意:除了增加的内存使用量之外,在AQTime下运行会大大减慢应用程序的速度,使整个练习不仅不可能,而且也不切实际:-P
答案 0 :(得分:0)
AFAIK分配探查器将跟踪内存块分配,而不管分析区域如何。分析区域用于跟踪类实例化。当然,对分配大量内存的应用程序进行内存分析是一个问题,您可以尝试使用LARGE_ADRESS_AWARE标志和/ 3GB引导开关,或使用64位系统(只要您至少有4GB的内存)记忆,或更多)。您还可以在崩溃之前拍摄应用程序状态的快照,以查看内存的分配位置。分析需要时间,无论如何,你可能不得不让它运行一段时间。