Мне нужно обмениваться данными между двумя приложениями Java, работающими на одной машине (две разные JVM).Я уточняю, что данные для обмена большие (около 7 ГБ).Приложения должны получать доступ к данным очень быстро, потому что они должны отвечать на входящие запросы с очень высокой скоростью.Я не хочу, чтобы приложения хранили каждую копию данных.
Я видел, что одним из вариантов является использование отображенных в памяти файлов.Приложение A получает данные откуда-то (скажем, из базы данных) и сохраняет их в файлах.Тогда приложение B может получить доступ к этим файлам, используя java.nio
.Я не знаю точно, как работают файлы с отображением в памяти, я знаю только то, что данные хранятся в файле и этот файл (или его часть) отображается в область памяти (виртуальная память?).Итак, два приложения могут читать и записывать данные в память, и изменения автоматически (я полагаю?) Фиксируются в файле.Я также не знаю, существует ли максимальный размер файла, который будет полностью отображаться в памяти.
Мой первый вопрос: каковы разные возможности для двух приложений для обмена данными в этом сценарии (я имею в видупринять во внимание, что объем данных очень велик и что доступ к этим данным должен быть очень быстрым)?Я уточняю, что этот вопрос не связан с вводом-выводом, отображаемым в память, а просто для того, чтобы узнать, каковы другие способы решения этой проблемы.
Мой второй вопрос - каковы плюсы и минусы использования памятисопоставленные файлы?
Спасибо