从历史上看,我们在RAD工作室耗尽内存方面遇到了问题,XE10西雅图不再出现这种问题。我们有很多自己的组件从未经过大内存感知测试,并且在内置到我们的应用程序时不需要它但是我们最近因为在上面的地址实例化组件的设计时实例而导致IDE故障2Gb(我们已修复)。
我有一种感觉,我在某处看到Embarcadero有一种测试RAD Studio(命令行选项??)的方法,以获得更高的内存兼容性,但无法在任何地方找到引用。有没有人知道如何在IDE中强制更高的内存位置分配来验证我们的组件集的设计时间行为,或者在应用程序中替代一种测试方法,而不是写一些只窃取所有较低内存的东西。
我已尝试过FastMM中的“从顶部分配”选项,但即使可执行文件设置为更高内存使用,这也只是从2Gb开始向下分配。
答案 0 :(得分:2)
最有效的测试方法是强制系统自上而下分配内存。如何完成此操作在此处描述:https://msdn.microsoft.com/en-us/library/bb613473.aspx
要强制分配在较低地址之前从较高地址分配以进行测试,请在调用VirtualAlloc时指定MEM_TOP_DOWN或将以下注册表值设置为0x100000:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager \ Memory Management \ AllocationPreference
更改注册表设置后,您需要重新启动计算机。
如果您的机器在执行此操作时变得不稳定,请不要感到惊讶。许多反恶意软件产品无法在系统范围的自上而下内存分配下运行。您可能会发现在执行自上而下分配测试时需要暂时禁用反恶意软件。