我最近遇到了一个问题(请参见我的上一篇问题),这促使我更加仔细地研究Delphi应用程序中的内存管理。在我的第一次探索之后,我有两个问题。
我已经开始使用FastMMUsageTracker,并注意到以下情况。当我打开一个文件供应用程序使用(也创建一个表单等等)时,应用程序可用虚拟内存的变化与“FastMM4分配”的内存变化之间存在显着差异。
首先,我对术语有点困惑:为什么会有一些FastMM-分配的内存和一些“系统分配”(和保留)的内存?既然FastMM是内存管理器,为什么系统负责分配一些内存?
此外,我如何获得有关已分配该内存的对象/结构的更多详细信息? VM图表只有在显示“系统分配”,“系统保留”或“FastMM分配”的内存量时才有用,但没有链接到实际需要该内存的对象。例如,是否可以在执行中获取类似于FastMM在关闭应用程序时生成的报告?显然,FastMM将该信息存储在某个地方。
作为对我来说的额外奖励,如果人们能够推荐一本好的参考书籍或网站,那么这也将受到高度赞赏。网络上有大量的信息,但通常非常特定于案例和专家。
谢谢!
PS:这不是关于查找泄漏的问题,在那里没有问题,只是尝试更好地理解内存管理并为未来做出预防措施,因为我们的应用程序使用越来越多的内存。
我已经开始使用FastMMUsageTracker,并注意到以下情况。当我打开一个文件供应用程序使用(也创建一个表单等等)时,应用程序可用虚拟内存的变化与“FastMM4分配”的内存变化之间存在显着差异。
首先,我对术语有点困惑:为什么会有一些FastMM-分配的内存和一些“系统分配”(和保留)的内存?既然FastMM是内存管理器,为什么系统负责分配一些内存?
此外,我如何获得有关已分配该内存的对象/结构的更多详细信息? VM图表只有在显示“系统分配”,“系统保留”或“FastMM分配”的内存量时才有用,但没有链接到实际需要该内存的对象。例如,是否可以在执行中获取类似于FastMM在关闭应用程序时生成的报告?显然,FastMM将该信息存储在某个地方。
作为对我来说的额外奖励,如果人们能够推荐一本好的参考书籍或网站,那么这也将受到高度赞赏。网络上有大量的信息,但通常非常特定于案例和专家。
谢谢!
PS:这不是关于查找泄漏的问题,在那里没有问题,只是尝试更好地理解内存管理并为未来做出预防措施,因为我们的应用程序使用越来越多的内存。