Как почистить кэш java
Перейти к содержимому

Как почистить кэш java

  • автор:

Очистка кэша Java (Windows XP)

  • Очистка кэша виртуальной машины Java в ОС Windows XP
  • &nbsp
  • &nbsp
  • &nbsp
  • &nbsp

Как очистить cache hibernate’а

Не помогло. Проверял так: вызывал эти методы (вместе, по отдельности), затем вызывал сборку мусора несколько раз (до тех пор пока его вызов приносил результат), а затем смотрел дамп памяти, а все запросы что я выполнял — все там. Cache 2-го уровня отключал/очищал — никак не влияет Версия hibernate’а 3.6.8.Final Перед закрытием сессии делается

session.clear() 

Что можете посоветовать?
Отслеживать
задан 25 ноя 2011 в 8:44
610 7 7 серебряных знаков 16 16 бронзовых знаков
session.flush() ??
25 ноя 2011 в 9:16
нет, не помогает
25 ноя 2011 в 12:27

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

В хибернейте лежит тикет на этот issue , подробности можно посмотреть здесь.

Таким образом, сейчас имеет смысл использовать старый интерфейс для очистки кэша через SessionFactory , т.е:

// Или evictQueries(region), но region необходимо получить. sessionFactory.evictQueries(); Map allClassMetadata = sessionFactory.getAllClassMetadata(); for (EntityPersister persister : allClassMetadata.values()) < if (persister.hasCache()) < sessionFactory.evictEntity(persister.getCache().getRegionName()); >> // Аналогично для 'evictCollection' через 'getAllCollectionMetadata' 

Если все — в default cache region , то просто evictQueries , evictEntity , evictCollections .

Как очистить кэш Java

Как очистить кэш Java
Среда выполнения Java Oracle включает в себя подключаемый модуль веб-браузера. Плагин веб-браузера запускает Java-апплеты на веб-страницах. Java сохраняет загруженные приложения, апплеты, файлы журналов и другие данные на вашем компьютере в кеше. Java может загружать эти апплеты из кэша в будущем, если они не изменились, что уменьшает объем данных, необходимых для загрузки, и ускоряет время загрузки. Если вы хотите очистить кэш Java на своем компьютере, вы можете сделать это с помощью предоставленной панели управления Java. Кэш Java отделен от кеша вашего веб-браузера. инструкции
1

Нажмите «Начать». Нажмите «Панель управления».
2

Нажмите «Программы» на панели управления и щелкните значок «Java».
3

Нажмите кнопку «Настройки» в разделе «Временные файлы Интернета» в нижней части окна панели управления Java.
4

Нажмите кнопку «Удалить файлы» в появившемся окне «Настройки временных файлов».
5

Нажмите «ОК», чтобы удалить файлы.

Связанные записи:

  1. Как обновить Microsoft Money 2001
  2. Как обосновать Итак, пункты последнего предложения слева обосновываются в Microsoft Word
  3. Как сделать видео ярче в проигрывателе Windows Media
  4. Как переместить слой в GIMP

Как создать и очистить кэш справочных данных с помощью одноэлементных EJB и MBeans

В одном из моих проектов у меня было требование загружать справочные данные из нескольких источников в среде Java EE 6 WebLogic с EclipseLink в качестве платформы ORM . Поскольку я не мог найти аннотацию в мире Java EE, сравнимую со сладким @Cacheable из Spring YET, мне пришлось написать свое «собственное» решение для кэширования. Хотя справочные данные практически не меняются с течением времени, еще одним требованием была возможность очистки кеша от внешних источников. Так что здесь идет …

1. Кеш

Предполагалось, что это будет кэш только для чтения с возможностью очистки его извне. Я хотел, чтобы кэш был своего рода оберткой для службы, предоставляющей фактические справочные данные для приложения — стиль AOP с кодом!

1.1. Интерфейс

Простой интерфейс кеша для справочных данных

public interface ReferenceDataCache < * Returns all reference data required in the application ReferenceData getReferenceData(); * evict/flush all data from cache void evictAll();

Функциональность кэширования определяет два простых метода:

  • getReferenceData() — который кэширует справочные данные, собранные за кулисами из разных источников
  • evictAll() — метод, вызываемый для полной очистки кэша

1.2. Реализация

Простая реализация кэша справочных данных с @Singleton

@ConcurrencyManagement (ConcurrencyManagementType.CONTAINER)
public class ReferenceDataCacheBean implements ReferenceDataCache < private static final String ALL_REFERENCE_DATA_KEY = "ALL_REFERENCE_DATA" ; private ConcurrentHashMap refDataCache = null ;
ReferenceDataService referenceDataService;
@PostConstruct
public void initialize()< this .refDataCache = new ConcurrentHashMap<>();
@Lock (LockType.READ)
public ReferenceData getReferenceData() < if (refDataCache.containsKey(ALL_REFERENCE_DATA_KEY))< return refDataCache.get(ALL_REFERENCE_DATA_KEY); ReferenceData referenceData = referenceDataService.getReferenceData(); refDataCache.put(ALL_REFERENCE_DATA_KEY, referenceData); return referenceData; public void evictAll() < refDataCache.clear();

Замечания:
  • @Singleton — наверное, самая важная строка кода в этом классе. Эта аннотация указывает, что в приложении будет ровно один синглтон этого типа компонента. Этот бин может быть вызван одновременно несколькими потоками. Он также поставляется с аннотацией @PostConstruct . Эта аннотация используется для метода, который должен быть выполнен после внедрения зависимости для выполнения любой инициализации — в нашем случае это инициализация «кэша» (карта хеша)
  • @ConcurrencyManagement(ConcurrencyManagementType.CONTAINER) объявляет тип управления параллелизмом одноэлементного сессионного компонента. По умолчанию установлено значение « Container . Я использую его здесь только для того, чтобы подчеркнуть его существование. Другой параметр ConcurrencyManagementType.BEAN указывает, что разработчик компонента отвечает за управление одновременным доступом к экземпляру компонента.
  • фактический «кеш» — это ConcurrentHashMap который имеет ключи на основе String и хранит Object s. Это держится в памяти из-за синглтоновой природы бобов
  • @EJB ReferenceDataService — это @Stateless @EJB который за кулисами собирает справочные данные из разных источников
  • Реализация метода getReferenceData () очень проста: он проверяет, есть ли в ConcurrentHashMap запись с ключом String, указанным как константа « ALL_REFERENCE_DATA ». Если это так, это будет извлечено из памяти, в противном случае будет загружен компонент службы.
  • @Lock(LockType.READ) указывает тип блокировки параллелизма для одноэлементных компонентов с параллелизмом, управляемым контейнером. Когда установлено значение LockType.READ , он применяет метод для разрешения полного одновременного доступа к нему (при условии, что блокировки записи не удерживаются). Это именно то, что я хотел, так как мне нужно только выполнять операции чтения. Другой более консервативный параметр @Lock(LockType.WRITE) , который, @Lock(LockType.WRITE) , является DEFAULT, обеспечивает исключительный доступ к экземпляру компонента. Это должно замедлить метод в среде с высокой степенью параллелизма …
  • метод evictAll() просто удаляет все элементы из хэш-карты.

2. Очистка кеша

Вторая часть этого поста будет посвящена возможностям очистки кеша. Поскольку реализация кэша является корпоративным Java-бином, мы можем вызвать его из MBean или, почему нет, из веб-службы.

2.1. MBean

Если вы новичок в Java Management Extensions (JMX), который представляет собой технологию Java, которая предоставляет инструменты для управления и мониторинга приложений, системных объектов, устройств (например, принтеров) и сервис-ориентированных сетей. Эти ресурсы представлены объектами, называемыми MBeans (для Managed Bean) , я настоятельно рекомендую вам начать с этого учебного курса: Java Management Extensions (JMX)

2.1.1. Интерфейс

Представленный метод позволит только сброс кеша через JMX:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *