MappedByteBuffer在linux下使用mmap吗?

时间:2014-07-08 21:11:21

标签: java memory-mapped-files

非常简单的问题,假设Linux下的情况, windows。

如果我尝试为缓冲区大小非常大的巨大文件获取MappedByteBuffer,JVM是否会使用下面的虚拟内存?

另外,MappedByteBuffer会有页面错误吗?我应该确保RAM具有指定缓冲区大小的可用空间吗?

1 个答案:

答案 0 :(得分:1)

MappedByteBuffer的文档明确指出:

  

直接字节缓冲区,其内容是文件的内存映射区域。

在POSIX系统上,这意味着JRE将使用mmap将文件内容映射到内存中。除非文件由于某种原因已经存在于内存中,否则将导致每个丢失页面的第一次访问时出现页面错误,并且虚拟内存系统可能随时遇到任何已分配内存的页面错误。监视系统I / O以查看运行应用程序的系统中是否有足够的RAM,但内核擅长确定何时在必要时交换内容。