我的 Delphi XE 应用程序基于使用 RemObjects 创建的本地服务器 DLL 的单个 EXE,并为特定操作使用大量内存,直到它生成一个异常说没有足够的内存。因此,我试图了解发生这种情况的原因和位置,因此我在代码中放置了各种步骤,报告内存使用情况。问题是,根据用于获取内存使用信息的方法,我得到的信息非常不同:
如果我使用这里解释的方法,直接向 FastMM 询问客户端 EXE 和服务器 DLL,我得到的是:
- 第 1 步:[客户端] = 36664572 - [服务器] = 3274976
- 第 2 步:[客户端] = 62641230 - [服务器] = 44430224
- 第 3 步:[客户端] = 66665630 - [服务器] = 44430224
现在,如果我使用这里解释的使用 GetProcessMemoryInfo 的方法,我会得到更多的内存使用:
- 第 1 步:[流程] = 133722112
- 第 2 步:[流程] = 1072115712
- 第 3 步:[流程] = 1075818496
根据我的记忆问题,看起来第二种方法是正确的,但 FastMM 方法怎么会如此“低”?什么可以解释差异?