2014-10-10 2 views
1

Я читал о кешировании JSR 107 (JCache).JSR 107 - Кэширование (JCache) против кэширования процессора

Я смущен: Из того, что я знаю, каждый процессор управляет своей кэширующей памятью (без какой-либо помощи ОС).

Итак, зачем нам нужен Java-кэширующий обработчик? (если ЦПУ управляет своим собственным кешем)

Что мне здесь не хватает?

Благодаря

ответ

1

Существует разница между кэшированием ЦП и кэшированием памяти. Этот JCache будет кэшировать вещи в памяти, поэтому вам не нужно получать их с дорогого ресурса, такого как диск или через сеть.

Таким образом, у процессоров встроены в них кэши, чтобы они не могли попасть в память. Процессоры обычно имеют три уровня кеша и хранят около 8 МБ. Кэширование процессора - это не то, о чем вам нужно беспокоиться, потому что оно заботится о вас. Если что-то не в кэше ЦП, то оно должно вывести его из памяти.

Кэширование в памяти - это избежать перехода на диск или даже более медленные ресурсы, как я упоминал ранее. Эти механизмы программы контролируют. Поэтому, если вы хотите избежать непрерывного запроса вашей БД для какого-либо объекта, вы можете сохранить его в памяти и продолжать возвращать тот же объект. Это экономит немало производительности. Как отметил Томас, JCache добавляет функциональность, чтобы обеспечить кэширование через JVM. Из того, что я понимаю, это означает, что разные программы Java могут использовать один и тот же кеш.

+0

Не могли бы вы быть более информативными. Кэш ЦП будет делать то же самое: кеш-память в памяти, поэтому ему не нужно будет получать ее из ОЗУ (дорогостоящий ресурс), , так что же это такое? – user3668129

+1

Кэш-память процессора ограничена 8 МБ, и вы не контролируете ее. У вас много памяти, гигабайт материала, и вы контролируете его. – uriDium

+0

Спасибо за вашу помощь :) – user3668129

2

Это о кэшировании объектов Java, как объекты, которые являются дорогостоящими для создания, или должны быть разделены между несколькими виртуальными машинами Java. См. https://jcp.org/en/jsr/detail?id=107

Кэш обычно используется для временного хранения данных между использованием, поскольку он занимает слишком много времени или просто невозможно воссоздать, если вы просто выбросите его между использованием.

Кэш ЦП хранит данные и инструкции в случае, если он должен получить к нему доступ снова, потому что чтение его из памяти занимает больше времени.

Кэш JSR 107 работает на совершенно другом уровне.

+1

Спасибо. Если я использую пулы и создаю все объекты при запуске (а не во время выполнения), Нужно ли использовать JCache? (Будет ли эффективно использовать JCache в этом сценарии?) – user3668129

+0

Я не знаком с JCache. Использование пулов также является видом кэширования. Если простой пул работает для вас, идите на это. Если это действительно лучший дизайн, невозможно сказать без дополнительной информации о вашем приложении. –

+0

Я храню объекты в пулах, но я не уверен, что всегда данные хранятся в кеше, а не в ОЗУ ... – user3668129

Смежные вопросы