C#使用内存映射文件

时间:2013-03-03 11:38:57

标签: c# memory-management shared-memory

我想知道那些内存映射文件有哪些文件扩展名。他们是.dll或类似的东西。另一件事是我可以使用这样的文件,如果我不知道它的内容。

4 个答案:

答案 0 :(得分:5)

  

内存映射文件有哪些文件扩展名?

内存映射文件可以包含任何文件扩展名。您可以为任何文件创建文件映射。

  

如果我不知道它的内容,我可以使用这样的文件吗?

是的,您可以在不知道其内容的情况下为任何文件创建文件映射。


这些答案非常简单,我怀疑你并不完全了解内存映射文件是什么以及它们有用的原因。我怀疑你应该问的问题是:什么是内存映射文件?

答案 1 :(得分:3)

来自MSDN

  

内存映射文件包含虚拟文件的内容   记忆。文件和内存空间之间的这种映射使得能够实现   应用程序,包括多个进程,来修改文件   直接读写内存。从.NET开始   在框架4中,您可以使用托管代码访问内存映射文件   与本机Windows函数访问内存映射文件的方式相同,   如在MSDN中管理Win32中的内存映射文件中所述   图书馆。

     

有两种类型的内存映射文件:

  •   

    持久内存映射文件持久文件是内存映射文件   与磁盘上的源文件关联。当最后一个进程有   完成文件处理后,数据将保存到源文件中   在磁盘上。这些内存映射文件适合使用   非常大的源文件。

  •   

    非持久内存映射文件

         

    非持久文件是未关联的内存映射文件   用磁盘上的文件。当最后一个进程完成后   文件,数据丢失,垃圾回收文件   采集。这些文件适合为其创建共享内存   进程间通信(IPC)。

答案 2 :(得分:1)

内存映射文件是操作系统提供的一种技术,允许您访问任何给定文件,就像它是一块内存一样。操作系统只需映射到您的进程可用的操作内存的一部分。

没有更多,没有更少。因此,对文件的扩展和对其内容的了解的关注是无关紧要的。但是,人们会希望您知道您正在尝试使用的文件中的内容。

答案 3 :(得分:1)

“内存映射文件”的来源是OS / 2(Windows NT的前身),它被称为“全局共享内存段”,实际上它是一个更准确的术语。

这些用于跨应用程序共享DATA IN MEMORY。这些数据可以保存到所有挂钩的应用程序,也已退出(持久性)......有时需要,有时不需要。

对于那些谈论在文件中读入内存的人,是的,你可以这样做,但你为什么这样做?你是否需要重新阅读同一个文件?如果是这样,请获取所需内容并加载一些变量(例如配置文件)。

此功能实际上用于共享不断修改(由一个或多个应用程序)并由一个或多个应用程序读取的DATA。比使用数据库,读取/写入磁盘文件等更容易,更快捷。