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

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

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

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


person Jenson    schedule 22.06.2017    source источник
comment
Как вы думаете, что означает слово может в этой цитате? Ваш вопрос: так ли это? Слово может быть ответом: возможно! Может быть! Может быть! Неизвестный! Зависит от! --- Любые другие слова, которые помогут вам понять это?   -  person Andreas    schedule 22.06.2017
comment
Какой смысл использовать MMF больше, чем ваша куча? это противоречит цели подключения файла к памяти.   -  person efekctive    schedule 23.06.2017


Ответы (1)


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

person chen wen qing    schedule 23.06.2017