Ran*_*Ran 5 delphi memory-management heap-memory high-volume getmem
我正在使用Delphi开发一个记录器/嗅探器.在操作期间,我得到了大量的数据,这些数据可以在压力操作期间累积到大约3 GB的数据.在某些计算机上,当我们到达这些级别时,应用程序停止运行,有时会抛出异常.
目前我正在使用GetMem函数来分配指向每条消息的指针.
是否有更好的方法来分配内存,以便最大限度地减少失败的可能性?请记住,我不能将大小限制为硬限制.
您如何看待使用HeapAlloc,VirtualAlloc甚至是映射文件?哪个更好?
谢谢.
您的基本问题是32位进程的硬地址空间限制为4GB.由于您遇到3GB的问题,我只能假设您使用的/LARGEADDRESSAWARE是64位Windows或32位Windows和/ 3GB启动开关.
我想你有几个选择,包括但不限于以下内容:
由于我不了解您的架构,我无法明确建议解决方案,但根据我的经验,减少内存占用通常是最佳解决方案.
使用不同的分配器可能没什么区别.是的,确实存在低碎片分配器,但它们肯定不会真正解决您的问题.他们所能做的只是让它不太可能出现.
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |