我发现AQTime很难使用,因为它太多地干扰了原始程序。例如,如果我有一个使用300MB内存的程序,我可以毫不费力地使用AQTime的分配分析器,并找出大部分内存正在使用的位置。然而,我注意到在AQTime下运行时,原始程序在分析时使用了更多的1 1GB。
现在,我正在尝试减少一个使用1.4 of内存的程序的内存使用量。如果我在AQTime下运行它,那么原始程序将使用所有2 2GB的地址空间并崩溃。当然,我可以发明一组较小的测试数据,并估计内存使用量将如何随整个数据集扩展-但我首先使用分析器的原因是试图避免这种猜测。
我已经将AQTime设置为'Collect stack information - None‘,所有用于检查内存完整性的复选框都被关闭,并且我已经尝试将分析区域限制为只有几个类,但这似乎没有任何改善。有没有一种使用AQTime的方法可以产生较小的开销?或者,如果做不到这一点,还有什么其他方法可以很好地了解内存的使用情况?
这个应用是用Delphi2010编写的,我用的是AQTime 6。
注:除了内存使用量的增加,在AQTime下运行会大大减慢应用程序的速度,这使得整个操作不仅不可能,而且也不切实际:-P
发布于 2011-01-10 17:21:00
AFAIK分配探查器将跟踪内存块分配,而不考虑分析区域。分析区域用于跟踪类的实例化。当然,内存-分析分配大量内存的应用程序是一个问题,您可以尝试使用LARGE_ADRESS_AWARE标志和/3GB启动开关,或者使用64位系统(只要您有至少4 4GB或更多的内存)。您还可以在应用程序崩溃之前获取应用程序状态的快照,以查看内存分配的位置。分析需要时间,不管怎样,你可能不得不让它运行一段时间。
https://stackoverflow.com/questions/4643530
复制相似问题