Вопрос 1: Почему это значительное преимущество?
Я полагаю, это относится к разделу подкачки.Если вы используете кучу или прямую память, ее можно поменять местами.Это очень плохая идея с точки зрения производительности, но это может произойти.Файлы с отображенной памятью разбиваются на эти файлы.
ИМХО экономия места подкачки не такая уж большая проблема, но это означает, что вам не нужно перенастраивать систему, потому что ваше приложение хочет использовать многовиртуальной памяти.
Вы никогда не хотите, чтобы ваша куча была перенесена на диск.
Вопрос 2: Если у меня есть JVM, работающая с (скажем) 1G или RAM на стандартномДистрибутив Linux, и я открываю файл размером 800 МБ - какой процент памяти JVM будет занимать пространство подкачки?
Файлы с прямой памятью и отображенной памятью не учитываются в вашей куче.Если ваша куча использует почти 1 ГБ, а максимальная - 1 Г, вы можете открыть файл размером 800 МБ.Ни в том, ни в другом случае не будет использоваться пространство подкачки.
Вопрос 3. Как определить «пространство подкачки» при работе с большими файлами, читаемыми JVM, и каковы ключевые (неочевидные) преимущества памятисопоставленные файлы?
Я не знаю точно, что вы подразумеваете под пространством подкачки.Возможно, вы могли бы определить, что для вас означает пространство подкачки.
Основное преимущество файлов, отображаемых в память, заключается в том, что вы можете использовать большой объем данных и позволить ОС беспокоиться о том, какие части считать или записать на диск.Область может быть намного больше, чем физическая память, и даже больше, чем объем дискового пространства.
Пример отображения файла 8 ТБ в память Java http://vanillajava.blogspot.com/2011/12/using-memory-mapped-file-for-huge.html