Почему MMAP () (отображенный файл памяти) быстрее, чем read ()JAVA

Программисты JAVA общаются здесь
Anonymous
Почему MMAP () (отображенный файл памяти) быстрее, чем read ()

Сообщение Anonymous »

Я недавно работал над кое -что о 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

Вернуться в «JAVA»