Java通过memory-mapped files检索MappedByteBuffer
支持FileChannel#map
。这些文件允许多个进程共享内存,以及其他用途。
如the Wikipedia article所述,有两种类型的内存映射文件:
持久化的
持久文件与磁盘上的源文件相关联。最后一个过程完成后,数据将保存到磁盘上的源文件中。这些内存映射文件适合处理非常大的源文件。
非持久
非持久文件与磁盘上的文件无关。当最后一个进程使用该文件时,数据将丢失。这些文件适用于为进程间通信(IPC)创建共享内存。
通过FileChannel#map
可以轻松获取持久内存映射文件。但是,不能以这种方式获取非持久(匿名)文件。例如,在Python中,使用mmap
,可以将-1
作为文件号和唯一标记名称(在Windows中)传递,以获取匿名内存映射文件的段。
是否可以从Java中的匿名/非持久内存映射文件中读取?
如果是这样,是否可以(在Windows中)指定标签名称来映射匿名文件数据?