我有2 GB的RAM.我们有一个执行导出/导入操作的应用程序.我们有一个递归函数,它有一个类型为Set的局部变量,它会在每次迭代时继续填充.这个集合不断增长,一度我们的内存耗尽.
是否有可以最佳地使用内存的替代数据结构?
这是粗略的代码
GetObjectsForExportImpl(long lExportOptions, __int64 numIdProject, XExportSets &exportSets, long lClientId, CComPtrptrIPDServer,FILE *fp) { XExportSets exportLocal; //Thats a structure containing the Set QueryObjectsForExport(lExportOptions, numIdProject, exportLocal, lClientId, ptrIPDServer); SetIDs::iterator it = exportLocal.setShared.begin(); for (; it != exportLocal.setShared.end(); ++it) { //recursive call pExportObject->GetObjectsForExportImpl(lExportOptions, numIdProject, exportSets, lClientId, ptrIPDServer,fp); } }
Sedat Kapano.. 7
另一种结构无济于事.假设您切换到使用一半内存的类.你仍然只是拖延厄运.
结构大小为2GB通常表示您需要切换到基于磁盘的结构,数据库或内存映射哈希表.
另一种结构无济于事.假设您切换到使用一半内存的类.你仍然只是拖延厄运.
结构大小为2GB通常表示您需要切换到基于磁盘的结构,数据库或内存映射哈希表.