Java内存映射文件?

Edw*_*d83 8 java winapi memory-mapped-files

Java中的内存映射文件是否适用于Windows的内存映射文件?或者它只是基于Java中的内存和文件常见操作的仿真?

Jon*_*eet 10

它使用OS支持内存映射文件.

我正在努力找到备份文件,但我还没有找到任何结论.然而,文档的各个位说,像这样的事情:

内存映射文件的许多细节本质上依赖于底层操作系统,因此未指定.未指定请求的区域未完全包含在此通道的文件中时此方法的行为.是否通过此程序或其他程序对基础文件的内容或大小所做的更改传播到缓冲区是未指定的.未指定缓冲区更改传播到文件的速率.

如果只是模拟了所有内容,就不需要这种不明确的行为.


Ste*_*n C 9

在您的问题和注释行之间阅读,您要做的是使用内存映射文件在Java和C++应用程序之间共享内存/对象.

我的建议是不要试图这样做.

为了使这一点可靠,需要解决一些难题:

  • 同步两个应用程序对共享数据结构的使用,
  • 确保一个应用程序所做的更改可靠地写入主内存并由另一个应用程序读取,
  • 确保更改按预期顺序刷新到光盘.

Java特有的问题是您无法将Java对象放在内存映射区域中.相反,您必须以某种方式序列化和反序列化它们,这些方式与C++方面期望的表示形式兼容.

最后,即使您成功解决了所有这些问题,您的解决方案也可能很脆弱,因为它依赖于操作系统,C++和Java实现的未指定行为,如果您更改上述任何版本的版本,这些行为可能会发生变化.