Поиск простого Java [закрытый] кэш в оперативной памяти

В качестве продолжения ответа @StuartMarks ответ . Моя библиотека StreamEx имеет операцию takeWhile , которая совместима с текущей реализацией JDK-9. При запуске под JDK-9 он просто делегирует реализацию JDK (через MethodHandle.invokeExact, которая очень быстро). При работе под JDK-8 будет использоваться реализация «polyfill». Поэтому, используя мою библиотеку, проблема может быть решена следующим образом:

IntStreamEx.iterate(1, n -> n + 1)
           .takeWhile(n -> n < 10)
           .forEach(System.out::println);

90
задан sanity 22 February 2009 в 20:46
поделиться

4 ответа

Ehcache является довольно хорошим решением для этого и имеет способ посмотреть (, getQuiet () является методом), таким образом, что это не обновляет неактивную метку времени. Внутренне, Ehcache реализован с рядом карт, отчасти как ConcurrentHashMap, таким образом, он имеет подобные виды преимуществ параллелизма.

37
ответ дан Alex Miller 5 November 2019 в 14:20
поделиться

Как насчет этого: https://commons.apache.org/proper/commons-jcs / (обновленный к новому адресу, поскольку JCS находится теперь в Apache палата общин)

3
ответ дан Heretic Monkey 5 November 2019 в 14:20
поделиться

При необходимости в чем-то простом это отвечало бы всем требованиям?

Map<K, V> myCache = Collections.synchronizedMap(new WeakHashMap<K, V>());

Это, который сохраняет на диск привычка, но Вы сказали, Вы хотели простой...

Ссылки:

(Поскольку Adam прокомментировал, синхронизируя карту, поражали производительность. Не высказывание идеи не имеет волос на нем, но было бы достаточно как быстрое и грязное решение.)

19
ответ дан Evan 5 November 2019 в 14:20
поделиться

Попробовать Ehcache? Это позволяет Вам включать свои собственные алгоритмы истечения кэширования, таким образом, Вы могли управлять своей функциональностью быстрого взгляда.

можно сериализировать к диску, базе данных, через кластер и т.д.

0
ответ дан Stephen 5 November 2019 в 14:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: