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

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

-  

-  

-  

-  

Как очистить 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
Нажмите «ОК», чтобы удалить файлы.
Связанные записи:
- Как обновить Microsoft Money 2001
- Как обосновать Итак, пункты последнего предложения слева обосновываются в Microsoft Word
- Как сделать видео ярче в проигрывателе Windows Media
- Как переместить слой в 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
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: