为了账号安全,请及时绑定邮箱和手机立即绑定

由于 C# 中的几个大内存字典对象导致应用程序性能下降

由于 C# 中的几个大内存字典对象导致应用程序性能下降

C#
翻过高山走不出你 2021-12-25 18:34:10
我正在开发一个 winforms 应用程序,我必须在其中从 Web API 调用加载数据。将返回几百万行数据,必须将其存储在字典中。逻辑是这样的。用户将单击一个项目并加载数据。如果用户单击另一个项目,则会创建另一个新词典。在此过程中,将创建几个这样重量级的 Dictionary 对象。一段时间后,用户可能不会使用旧的 Dictionary 对象。这是使用 WeakReference 的情况吗?。请注意,重新创建任何 Dictionary 对象都需要 10 到 20 秒。如果我选择将所有对象保留在内存中,应用程序性能会在一段时间后缓慢下降。
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

这里的答案是使用更高级的技术。

使用内存映射文件将字典存储在磁盘上;那么您不必担心一次将它们全部保存在内存中,因为操作系统会根据需要将它们换入和换出。

您将需要编写一个专门设计用于在内存映射文件区域中操作的字典,以及一个用于存储字典中键值对指向的内容的堆。由于您没有删除任何内容,因此这实际上非常简单。

否则,您应该接受 Fildor 4 的建议并只使用数据库,因为它基本上会完成我刚刚为您提到的所有事情,并用一个很好的语法将其包装起来。


查看完整回答
反对 回复 2021-12-25
  • 1 回答
  • 0 关注
  • 413 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号