Java- занимает ли mappedbytebuffer прямую память?

Мне любопытно, занимает ли mappedbytebuffer прямую память в Java? Как упомянуто здесь

Прямой байтовый буфер также может быть создан путем отображения области файла непосредственно в память

Когда я отображаю файл в память, следует использовать прямую память. Но я запустил программу с параметром JVM "-XX:MaxDirectMemorySize=200MB", затем попытался отобразить файл объемом 1 ГБ в память, это сработало. Более того, я сначала выделил DirectByteBuffer с 200 МБ, а затем попытался отобразить файл размером 1 ГБ в память, и он все еще работал! Итак, какую часть памяти занимает mappedbytebuffer?

1 ответ

Я думаю, когда вы отображаете больший файл в небольшую память, экземпляр mappedbytebuffer может отобразить область файла, которую вы только что использовали, в память, тогда другая область, отображенная в памяти, будет заменена MMU на SWAP(виртуальную память на жестком диске)

Другие вопросы по тегам