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