В JEP для AppCDS есть пример, показывающий, как добавить классы приложения в общий архив.Что касается ограничений, их немного:
- Прямые классы (.class), присутствующие в каталоге на пути к классам, не могут быть добавлены в общий архив.См. Этот поток .
- Классы, загруженные пользовательскими загрузчиками классов, не могут быть добавлены в общий архив.См. Этот поток .
При использовании CDS / AppCDS следует учитывать и другие практические соображения, например:
- Если вы обновляетеJAR-файлы в файловой системе, то вам придется воссоздать общий архив.
- Если вы используете Java или JVMTI агентов, которые изменяют / повторно преобразовывают / переопределяют файл класса во время выполнения,тогда общий архив не будет полезен, так как классы будут загружаться с диска, поскольку агентам нужны фактические данные файла классов, которые, как я считаю, не хранятся в общем архиве.
Еще одна приятная и подробная статьяна CDS и AppCDS - https://simonis.github.io/cl4cds/.
Автор статьи также написал инструмент , который позволяет совместно использовать классы приложений, даже если они загружаются пользовательскими загрузчиками классов.
Если вы заинтересованы в использовании CDS, вы также можете попробовать OpenJ9 JVM, которая имеет эту функцию в течение длительного времени и является гораздо более зрелой и полной.Подробнее об этом здесь .