0

我很好奇mappedbytebuffer是否占用Java中的直接内存?正如这里提到的

也可以通过将文件的区域直接映射到内存来创建直接字节缓冲区

当我将文件映射到内存时,应该使用直接内存。但是我用 JVM 参数“-XX:MaxDirectMemorySize=200MB”启动了一个程序,然后我尝试将一个 1GB 的文件映射到内存中,它起作用了。更重要的是,我先分配了一个200MB的directByteBuffer,然后尝试将1GB的文件映射到内存中,它仍然有效!那么,mappedbytebuffer 占用了哪一部分内存呢?

4

1 回答 1

1

我认为,当您将较大的文件映射到小内存中时,实例mappedbytebuffer 可能会将您刚刚使用的文件区域映射到内存中,然后已映射到内存中的另一个区域将交换为 SWAP(虚拟内存硬盘 ) 由 MMU

于 2017-06-23T01:40:05.420 回答