2017-06-22 126 views
-1

我很好奇mappedbytebuffer是否占用Java中的直接内存?如在hereJava-mappedbytebuffer占用直接内存吗?

mentiond直接字节缓冲器也可以通过映射文件的区域被创建直接进入存储器

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

+0

您认为该引用中的“可能”一词意味着什么?你的问题是“是否”? “可能”一词就是答案:或许!也许!可能!未知!依靠! ---任何其他能够帮助你理解的词? – Andreas

+0

使用比堆大的MMF有什么意义?这打破了将文件连接到内存的目的。 – efekctive

回答

1

我想,当你映射一个大文件成小内存,mappedbytebuffer实例可以映射您刚刚使用 到内存中的文件的区域,然后一直地图在内存中会交换到其他区域交换(MMU上的虚拟内存)由MMU提供