Java 10: улучшение производительности через AppCDS (Application Class-Data Sharing)
JEP 310 — Application Class-Data Sharing
При запуске JVM загружает классы в память. При множестве JAR-файлов возникает заметная задержка при первом запросе. В бессерверной архитектуре (serverless) это увеличивает cold-start время. AppCDS позволяет поместить классы приложения в общий архив, уменьшая время запуска и память за счёт совместного использования метаданных классов между несколькими Java-процессами.
Процесс (3 шага)
- Создание списка классов для архивации — генерируем список
welcome.lstдля классаGreeting.javaвwelcome.jar:$ java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=welcome.lst -cp welcome.jar Greeting - Создание AppCDS-архива — архивируем список классов:
$ java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=welcome.lst -XX:SharedArchiveFile=welcome.jsa -cp welcome.jar - Использование AppCDS-архива — запуск с архивом:
$ java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=welcome.jsa -cp welcome.jar Greeting
Это особенно актуально для микросервисов и serverless-функций, где скорость холодного старта критична.
java
- Освоение операторов Java: типы, синтаксис и практические примеры
- Комментарии в Java: типы, использование и лучшие практики
- Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
- Освоение строк в Java: создание, методы и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
- Понимание Java Vector: использование, особенности и сравнение с ArrayList