我很好奇mappedbytebuffer是否占用Java中的直接内存?正如here
中提到的那样也可以通过将文件区域直接映射到内存
来创建直接字节缓冲区
当我将文件映射到内存时,应使用直接内存。但我开始使用JVM param" -XX:MaxDirectMemorySize = 200MB"然后我尝试将1GB的文件映射到内存中,它有效。更重要的是,我首先分配了一个200MB的directByteBuffer然后尝试将1GB的文件映射到内存中,它仍然有效!那么,mapbytebuffer中的哪一部分内存会占用?
答案 0 :(得分:1)
我认为,当您将较大的文件映射到小内存时,mappedbytebuffer
的实例可能会映射您刚刚使用过的文件的某个区域
进入内存,然后已经映射到内存中的其他区域将通过MMU交换到SWAP(硬盘上的虚拟内存)