Я недавно работал над кое -что о Mavenbytebuffer of Java Nio.
Я прочитал несколько постов об этом, и все они упоминают об этом »
быстрее, чем read () ".
должен прочитать данные через: файл диска -> ядро -> приложение, поэтому он имеет контекстное переключение и копирование буфера. Итак, в первый раз он прочитал: Виртуальный адрес -> MEMORY -> FAIN -FULNE -> DISK FILE -> KERNEL -> память. За исключением того, что вы можете получить к нему доступ к нему случайным образом, последние 3 шага (файл диска -> ядро -> память) точно такой же, как read () , так как, как mmap () быть менее копированием или syscall, чем read () ? Данные памяти в SWAP (LRU)? Поэтому, когда во второй раз, когда вы получаете доступ к этим данным, ОС извлекает их из SWAP, но не дискового файла (нет необходимости копировать в буфер ядра), именно поэтому Mmap () имеет меньшее копирование и syscall? Поэтому, когда вы читаете из MapedByteBuffer, значит ли это, что ему нужна еще одна дополнительная копия памяти извне java Heap в java Heap? Спасибо
Подробнее здесь:
https://stackoverflow.com/questions/291 ... -than-read