![]() |
1
1
内存映射文件基本上与垃圾收集器不兼容。这就是为什么这样一个主要的操作系统功能需要这么长时间才能得到.NET的支持。引用类型需要序列化到mmf视图memoryMappedViewstream,这是无法避免的。在非托管代码中存在类似的限制,带有指针的对象需要扁平化,以便指向的对象在视图中也可见。 无论您是将它们序列化为MMF还是文件,都不会有任何不同,文件系统缓存也是用MMF实现的。文件写入是 非常 快速,只要写入的数据适合可用的可映射内存。如果这是一个问题,那么看看64位操作系统来解决这个问题。 |
![]() |
2
1
我认为存储一块内存是不可行的,因为如果内存具有引用类型,那么它将具有指向其他内存块的指针,这些内存块在下次访问文件时可能不会应用。这就是二进制序列化存在的原因:为了维护这些类型的引用。但是,如果您真的想要严格的控制,我将使用System.IO.BinaryWriter和BinaryReader来完全控制以何种顺序写入文件的内容,同时最小化开销。 |
![]() |
3
0
这是为二进制序列化设计的方案类型。你不想用这个有什么特别的原因吗?你确认它“太慢”了吗?当然,您可以编写自己的自定义序列化程序代码,并可能使其更高效地用于特定的场景,但接下来您必须对其进行维护。值得付出努力吗? |