Очистка кеш Java
Очистить кэш Java, путем удаления временных файлов с помощью панели управления Java.
Найти Панель управления Java
Нажмите Меню Пуск -> Панель управления -> Java
Дважды щелкните на значке Java, чтобы открыть панель управления Java.
Windows 7, Vista
Нажмите Меню Пуск -> Панель управления
В поиск Панель управления , введите Java Control Panel .
Нажмите на Java, чтобы открыть панель управления Java.
Windows 8
Используйте поиск, чтобы найти панель управления
Пресс Клавиша с логотипом Windows + W , чтобы открыть поиск очарование искать настройки или перетащите указатель мыши к правому нижнему углу экрана, а затем нажмите на поискзначок.В поле поиска введите Панель управления Java
Нажмите на Java, чтобы открыть панель управления Java.
Удаляем временные файлы (кеш).
1. В панели управления Java, Главное окно -> вкладка Настройки в разделе Временные файлы.
2. В появившемся диалоговом окне нажмите кнопку Удалить файлы.
3. Нажмите OK на удаление временных файлов диалогового окна.
Примечание: Это удаляет все загруженные приложения и апплеты из кэша.
Примечание: Если вы хотите удалить конкретное приложение и апплет из кэша, нажмите на Просмотр приложения и опции View Applet соответственно.
Как очистить кэш Java?
Очистка Java Plug-в кэш заставляет браузер для загрузки последних версий веб-страниц и программ. Очистить кэш Java, путем удаления временных файлов с помощью панели управления Java.
Найти Панель управления Java
Нажмите на Пуск , а затем кнопку на панели управления опцию.
Дважды щелкните на значке Java, чтобы открыть панель управления Java.
Windows 7, Vista
Нажмите на Пуск , а затем кнопку на панели управления опцию.
В поиск Панель управления , введите Java Control Panel .
Нажмите на Java, чтобы открыть панель управления Java.
Windows 8
Используйте поиск, чтобы найти панель управления
Пресс Клавиша с логотипом Windows + W , чтобы открыть поиск очарование искать настройки или перетащите указатель мыши к правому нижнему углу экрана, а затем нажмите на поискзначок.В поле поиска введите Панель управления Java
Нажмите на Java, чтобы открыть панель управления Java.
Удаление временных файлов с помощью панели управления Java
1. В панели управления Java, в соответствии с Генеральным вкладке Настройки в разделе Временные файлы Интернета. Временные файлы настройки появится диалоговое окно.
2. Нажмите кнопку Удалить файлы о временном окне Файлы настройки. Удаление временных файлов появится диалоговое окно.
3. Нажмите OK на удаление временных файлов диалогового окна. Примечание: Это удаляет все загруженные приложения и апплеты из кэша.
4. Нажмите OK на временные файлы настройки диалогового окна. Примечание: Если вы хотите удалить конкретное приложение и апплет из кэша, нажмите на Просмотр приложения и опции View Applet соответственно.
Автоматически удаляемые temp файлы в java
Если вы когда-нибудь читали о том, какие типы ссылок бывают в java, и недоумевали зачем оно нужно в обычной жизни, то в этой статье я расскажу о реальном сценарии, когда может пригодиться знание того, как работают PhantomReference.
Если вы еще не сталкивались с различными типами ссылок в java, то можете прочитать эту статью: Soft, Weak and Phantom references in Java
Думаю, что многие были в ситуации, когда в процессе работы приложения нужно создать временный файл, например для обработки какого-нибудь изображения. Держать результат в файле удобно при работе с изображениями достаточно большого размера, когда нельзя постоянно хранить результат выполнения операции в памяти.
Недавно на работе я заметил в одном из микросервисов, занимающемся конвертацией файлов в разные форматы, что создание временных файлов стало приводить к сильному росту занятого пространства на диске. По правде говоря, не заметить это было сложно, потому что один раз место на диске полностью кончилось и дальнейшая работа сервиса была невозможна. Конечно после этого пришлось поменять настройку уведомлений об инцидентах и теперь мы узнаем об этом заранее, но сегодняшняя история не об этом.
2. Стандартный механизм удаления файлов
В java есть стандартный механизм для удаления временных файлов:
File temp = File.createTempFile("abc", ".tmp"); temp.deleteOnExit();
Но с ним есть один подвох: мало кто читает спецификацию, это же скучно, а там написано что файл будет удален только после остановки виртуальной машины, при этом остановка должна быть корректной. Другими словами, все файлы будут сохраняться на диске в ожидании перезапуска сервиса. Это поведение легко заметить на графике роста занятого места на диске:
За неделю работы сервис создает порядка 500Gb временных файлов, и как только его перезапустили, большая часть их была удалена.
В нашем случае этот сервис должен работать 24х7 и останавливать его только чтобы подчистить темп, по меньшей мере — странно. Конечно можно начать следить за использованием временных файлов и добавить логику удаления файла, когда мы точно завершили с ним работу, но наше приложение не маленькое, было написано довольно давно и добавить такую логику (еще и протестировать ее полностью) — довольно трудозатратно, да и попросту лень.
3. Используем PhantomReference
Что можно сделать в такой ситуации? Нам нужен механизм, позволяющий удалить файл после того как с ним закончили работу. Формально это может значить, что как только у нас не осталось ссылок на файл, и объект указывающий на него собран GC, то файл можно удалять с диска. И тут нам приходит на помощь PhantomReference, этот тип ссылок позволяет отследить момент сборки объекта коллектором. Как только ссылка на объект будет извлечена из очереди, мы можем удалять файл на диске.
Для этого нам потребуется расширить класс PhantomReference, добавим туда путь до файла и метод для его удаления:
class TempFileReference extends PhantomReference (1) ReferenceQueue queue) (2) super(file, queue); this.path = file.getPath(); > boolean delete() < File file = new File(path); if (file == null || !file.exists()) < return true; >return file.delete(); > >
1 | вот эту ссылку мы будем отслеживать, как только объект пометит GC, мы можем удалять файл на диске, потому что не останется ссылок, по которым можно было бы с ним работать. |
2 | указание очереди нам понадобится для того, чтобы потом отслеживать добавления туда наших ссылок, при работе GC |
При создании временного файла будем создавать фантомную ссылку на этот файл:
private ReferenceQueue referenceQueue = new ReferenceQueue<>(); public File createTempFile() (1) return tempFile; >
При этом в отдельном потоке нужно ждать в очереди наш указатель, как только мы его получим, файл можно удалять:
class TempFileReaperThread extends Thread < public TempFileReaperThread() < super("TempFileReaper"); setDaemon(true); >@Override public void run() (1) unusedReference.delete(); (2) unusedReference.clear(); (3) > > >
1 | ждем пока GC не соберет нашу ссылку на файл |
2 | удаляем файл сс диска |
3 | зануляем reference объект |
Теперь, за неделю работы приложения, размер папки temp — практически не изменился. Это хороший результат, как минимум это значит что теперь никто не будет разбужен ночью сообщением о том что место на диске кончилось.
Конечно, у этого механизма есть оверхед в плане производительности. Создавать новый поток для сборки неиспользуемых файлов — не дешевая операция, но при необходимости этот поток можно создать однажды при старте приложения и оставить фоновым демоном. Я использую вариант, когда поток создается при запросе первого временного файла и останавливается, когда все файлы удалены. Однако в нашем кейсе создание файлов происходит настолько интенсивно, что этот поток почти никогда не останавливается.
Примеры кода в статье осознано упрощены, если вы хотите использовать полноценное решение для создания временных файлов, с автоматическим удалением после завершения работы с ними, то воспользуйтесь готовой библиотекой: github.com/antkorwin/ioutils ну и конечно я буду рад, если вы поставите звездочку на гитхабе =) |
Как очистить кеш Java
Частый совет при появлении разнообразных ошибок с сайтами и порталами использующими Java апплеты — очистка кеша Java и установленных приложений и апплетов Java.
На вкладке General щелкаем по кнопке Settings
Щелкаем по кнопке Delete Files…
Устанавливаем галочки на пунктах
- Cached Applictions and Applets
- Installed Applications and Applets
И нажимаем кнопку ОК
Ожидаем исчезновения окна — кеш Java успешно очищен, закрываем окна Java.
Данная статья относится к «кубикам» из которых будут собираться более сложные статьи и решения проблем, дабы в каждой из более серьезных статей и решений, заново не описывать базовые операции.
[nx_heading style=»coloredline» heading_tag=»h4″ size=»24″ align=»left»]От автора:[/nx_heading]Если проблема решена, один из способов сказать «Спасибо» автору, указан — здесь.
Если же проблему разрешить не удалось или появились дополнительные вопросы, задать их можно на нашем форуме, в нашей группе Whatsapp.
Или же, воспользуйтесь нашей услугой «Удаленная помощь» доверив решение проблемы специалисту.
[nx_box title=»Поделиться этой статьей» style=»glass» box_color=»#ED303C»]Если данная статья вам помогла и вы хотели бы в ответ помочь проекту Mhelp.kz, поделитесь этой статьей с другими: