我有一个项目,它有一个相当复杂的嵌套(引用向上和向下调用引用的对象)对象(类)存储在字典中,例如:
public static Dictionary<string, Object1> DObject { get; set; }
Object1 是一个复杂的类。它不像“地址簿”或“个人信息”类。类本身有数组,另一个对象的字典。那些对象引用它上面的类,等等。
因为 DObject 在内存中的大小可以是 1GB+,所以我将使用 BinaryFormatter 将它序列化为一个文件。因为我需要加载这个对象,所以我正在考虑使用 MemoryMappedFile。新的键和值可能会添加到字典中。对象中可能有更多数据(添加/更新)等。MMF 是否改变大小?如何访问内存映射文件中 DObject 中的某个键?内存中是否有像哈希表这样的搜索机制,所以我可以像字典一样找到某个键并获取它的值?这个 MMF 是如何工作的?
我的理想想法是。在磁盘上有一个大文件(2GB+)。我在磁盘上快速更新字典中的对象,就像在磁盘上保存内存一样。一切都很快。键值查找一路。我查找、编辑值、保存等……我必须随时快速访问这个 2GB+ 的对象。如果 WCF 服务器重新启动,我需要快速访问这个 2GB+ 大小的对象。这就是为什么我在想1)序列化2)。从/向 MMF 加载和读取。我现在主要关心的是速度。换句话说,我每次调试项目时都不能从头开始重新加载这个 2GB 数据(这需要很长时间)。
关于我应该如何处理这种情况的任何建议、想法和想法。