我对 C# 中内存映射文件如何工作的理解是,每个数据请求都会产生一个副本。例如,如果您将大型数据结构作为文件持久化,则使用内存映射文件将导致实际文件映射到 RAM 的内存,并且一旦从文件中读取,副本就会驻留在 GC 堆中。
我假设这是因为一般来说指针和 GC 不能很好地相处。
那么,有没有办法解决这个问题?
- 也许通过一些可以在内存映射数据上公开托管 API 的混合模式 C++?
- 使用不安全的 C# 直接操作指针怎么样?
我试图解决的一般问题是在多个进程之间共享一个大型数据结构。数据结构用于回答一小部分可以作为简单 API 公开的“问题”(即基本上是一堆其他数据的高度专业化的索引)。
附带说明一下,这不会使 .NET API 对于“共享大量数据”的场景变得无用吗?