powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Кэширование объектов
9 сообщений из 9, страница 1 из 1
Кэширование объектов
    #39466965
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Подскажите пожалуйста как правильно организовать кеширование объектов?

Описание логики программы:
1. Есть jar файл с main классом - main.jar
2. Есть jar файл с классами - test.jar
3. В test.jar есть класс MyClass
4. В методе main создаю объект URLClassLoader, загружаю test.jar
5. Создаю объект MyClass
6. Закрываю класслоудер (URLClassLoader)
эти 6 пунктов отрабатывают правильно, так как мне нужно.
далее...
7. В методе main создаю объект URLClassLoader, загружаю test.jar
8. Проверяю есть ли созданный объект MyClass, если есть пользуюсь тем что есть, если нет создаю. Тут мой гений разбивается о стену ограничений :) которая звучит примерно так "cannot cast MyClass to MyClass" вроде как классы загруженные разными класслоудерами - разные классы. Соответственно возникло два вопроса - "а правильно ли я строю свой кэш" или "как сделать "многоразовай" класслоуер". Конечно же я не мог поступить не правильно :) и выбрал правильный, на мой взгляд, подход к кэшированию объектов. Полез наследоваться от URLClassLouder и с помощью reflection добиваться успеха. Пока я по пути к успеху, хочу спросить у Вас - "а как вы организовали кэш объектов?"
...
Рейтинг: 0 / 0
Кэширование объектов
    #39466981
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я начал бы с общеизвестного вопроса: "Нужны ли мы нам?"
...
Рейтинг: 0 / 0
Кэширование объектов
    #39466986
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClassLoader не имеет вообще никакого отношения к "кешированию объектов".
ClassLoader грузит классы, а не "объекты". Вроде как, это очевидно даже из названия.
Для кеширования объектов существует 100500 разнообразных готовых решений. Например EhCache.

Правильное кеширование само по себе задача не простая. Начать хотя бы с того что "кеширование объектов" в куче зачастую оказывает на много более пагубное воздействие на производительность системы, чем отсутствие этого кеша. Это связано с реализацией GC в Java.

Попробуйте абстрагироваться от той ерунды что вы уже написали и кокретизировать супер-задачу.
...
Рейтинг: 0 / 0
Кэширование объектов
    #39467070
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarin,

Зачем каждый раз создаете ClassLoader?
Хотите сделать что-то типа плагина, что бы если есть test.jar, то создавался объект, класс которого находится в нем?
...
Рейтинг: 0 / 0
Кэширование объектов
    #39467214
Фотография Mandarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavel_nvMandarin,

Зачем каждый раз создаете ClassLoader?
Хотите сделать что-то типа плагина, что бы если есть test.jar, то создавался объект, класс которого находится в нем?

верно test.jar это плагин

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

P/S/ спасибо за конкретный вопрос, а не "предупреждающий выстрел в воздух".
...
Рейтинг: 0 / 0
Кэширование объектов
    #39467462
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mandarinpavel_nvMandarin,

Зачем каждый раз создаете ClassLoader?
Хотите сделать что-то типа плагина, что бы если есть test.jar, то создавался объект, класс которого находится в нем?

верно test.jar это плагин

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

P/S/ спасибо за конкретный вопрос, а не "предупреждающий выстрел в воздух".

Может быть посмотреть на готовые решения?
Например OSGi?
...
Рейтинг: 0 / 0
Кэширование объектов
    #39467526
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MandarinP/S/ спасибо за конкретный вопрос, а не "предупреждающий выстрел в воздух".
Мандарин снова в ударе. Вместо того чтобы спрашивать про непонятное и закрывать пробелы, сразу переводит тему в плоскость хамаства. Так что там с "кешированием объектов" и громкими классами?
Для чего вам кешировать объекты?
А на счет новых классов, так нет никакого "кеширования". Один загрузчик - одна версия класса. Другой загрузчик - другая. Какая нужна версия, ту и используй. Объекты же трансформировать от версии к версии можно только через сериализацию. Казалось бы при чем тут кэш?
...
Рейтинг: 0 / 0
Кэширование объектов
    #39467546
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предполагаю что у Мандарина проблема в том что он объявляет переменные экземпляром класса одного ClassLoader, а присваивает ему объект другого.

Раньше с этим не сталкивался, но можно попробовать так:
Интерфейс плагинов грузит Parent ClassLoader, а конкретные классы (реализующие интерфейс) - грузят URLClassLoader (у которых указан Parent ClassLoader). Ну и переменные объявлять и работать с ними через интерфейс.
...
Рейтинг: 0 / 0
Кэширование объектов
    #39467555
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavel_nvПредполагаю что у Мандарина проблема в том что он объявляет переменные экземпляром класса одного ClassLoader, а присваивает ему объект другого.

Раньше с этим не сталкивался, но можно попробовать так:
Интерфейс плагинов грузит Parent ClassLoader, а конкретные классы (реализующие интерфейс) - грузят URLClassLoader (у которых указан Parent ClassLoader). Ну и переменные объявлять и работать с ними через интерфейс.
Да, так большинство систем и работают, правда, есть проблема с обновлением интерфейса.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Кэширование объектов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]