Файлы классов, извлеченные из кеша Equinox OSGi? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть приложение RCP, созданное из нескольких пользовательских плагинов.

Для нескольких плагинов нижнего уровня (но не самого нижнего уровня) все файлы class извлекаются из банки подключаемых модулей вКэш комплекта OSGi в папке org.eclipse.osgi в osgi.configuration.area.

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

ВОПРОСЫ

  • Могу ли я контролировать,Классы in извлекаются в кеш?
  • Хочу ли я?

ДЕТАЛИ

Этого не происходит для большинства плагинов-ins. Размер не имеет значения. Это не плагины самого низкого уровня. Это не набор плагинов, которые содержат Bundle-NativeCode.

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

Если плагин использует API-интерфейс FileLocator.toFileURL, это может привести к распаковке кода. Javadoc говорит:

Содержимое URL может быть извлечено в кэш в файловой системе для получения URL файла.

Иногда вы можете избежатьвызов toFileURL с помощью метода URL.openStream для чтения ресурса без распаковки. Такие API, как JFace ImageDescriptor.createFromURL, также не требуют URL файла.

1 голос
/ 09 ноября 2019

Файлы jar Bundle хранятся там. Если в манифесте пакета указано Eclipse-BundleShape: dir, Equinox выполнит это, распаковав архив в каталог.

Первый запуск после установки / обновления / удаления пакетов может быть медленнее, чем последующий запуск, поскольку Equinox должен запустить распознаватель для вычисления разрешения пакета для пакетов. Tnis кэшируется для ускорения последующих запусков.

...