我正在开发一个 winforms 应用程序,我必须在其中从 Web API 调用加载数据。将返回几百万行数据,必须将其存储在字典中。逻辑是这样的。用户将单击一个项目并加载数据。如果用户单击另一个项目,则会创建另一个新词典。在此过程中,将创建几个这样重量级的 Dictionary 对象。一段时间后,用户可能不会使用旧的 Dictionary 对象。这是使用 WeakReference 的情况吗?。请注意,重新创建任何 Dictionary 对象都需要 10 到 20 秒。如果我选择将所有对象保留在内存中,应用程序性能会在一段时间后缓慢下降。
1 回答
莫回无
TA贡献1865条经验 获得超7个赞
这里的答案是使用更高级的技术。
使用内存映射文件将字典存储在磁盘上;那么您不必担心一次将它们全部保存在内存中,因为操作系统会根据需要将它们换入和换出。
您将需要编写一个专门设计用于在内存映射文件区域中操作的字典,以及一个用于存储字典中键值对指向的内容的堆。由于您没有删除任何内容,因此这实际上非常简单。
否则,您应该接受 Fildor 4 的建议并只使用数据库,因为它基本上会完成我刚刚为您提到的所有事情,并用一个很好的语法将其包装起来。
- 1 回答
- 0 关注
- 413 浏览
添加回答
举报
0/150
提交
取消
