Я работаю с большими графиками, которые хранятся на диске в двоичном формате. Чтение графика с диска (SSD) и построение графика занимает примерно час. После построения график никогда не меняется. График занимает примерно 50 ГБ памяти, что не является проблемой для сервера. Тем не менее, мы часто хотим провести много экспериментов на графике, и оплата часа загрузки графика обходится дорого. Мне интересно, есть ли способ сохранить объект в памяти, чтобы виртуальная машина Java могла по существу найти объект в памяти.
Я знаю, что у JVM есть совместное использование памяти между процессами, но я не вижу ничего, что позволяло бы вам совместно использовать весь объект без сериализации объекта в байты (что, вероятно, было бы медленным, учитывая дорогостоящее восстановление). Решения для баз данных также кажутся медленными из-за большой части объекта (50 ГБ). Поскольку мы не модифицируем объект (он фактически является статическим), меня не волнуют проблемы параллелизма между процессами.
Лучшая идея, которую я видел, - это использовать FileChannel , чтобы отобразить сериализованный объект в память, используя всегда постоянную JVM, а затем получить вторую JVM для чтения из этого FileChannel для десериализации объекта. Любые другие предложения будут высоко оценены!