Рубрики
Без рубрики

Улучшения производительности Java 10

Краткий обзор улучшений производительности JDK 10.

Автор оригинала: Ganesh Pagade.

1. Обзор

В этом кратком руководстве мы обсудим улучшения производительности, которые появляются вместе с последним выпуском Java 10.

Эти улучшения применимы ко всем приложениям, работающим под управлением JDK 10, без необходимости каких-либо изменений кода, чтобы использовать их.

2. Параллельный полный GC для G1

Сборщик мусора G1 является сборщиком мусора по умолчанию с JDK 9. Однако полный GC для G1 использовал однопоточный алгоритм mark-sweep-compact.

Это было изменено на параллельный алгоритм mark-sweep-compact в Java 10, эффективно сокращающий время остановки во время полного GC.

3. Класс Приложения-Обмен Данными

Совместное использование данных классов, введенное в JDK 5, позволяет предварительно обработать набор классов в общий архивный файл, который затем может быть сопоставлен с памятью во время выполнения, чтобы сократить время запуска, что также может уменьшить объем динамической памяти, когда несколько JVM совместно используют один и тот же архивный файл.

Компакт-диски разрешали только загрузчик классов начальной загрузки, ограничивая эту функцию только системными классами. Компакт-диски приложений (APPCD) расширяют компакт-диски, позволяя встроенному загрузчику системных классов (он же “загрузчик классов приложений”), встроенному загрузчику классов платформы и пользовательским загрузчикам классов загружать архивированные классы. Это позволяет использовать эту функцию для классов приложений.

Мы можем использовать следующие шаги, чтобы использовать эту функцию:

1. Получите список классов для архивирования

Следующая команда сбросит классы, загруженные приложением Hello World , в hello.список :

$ java -Xshare:off -XX:+UseAppCDS -XX:DumpLoadedClassList=hello.lst \ 
    -cp hello.jar HelloWorld

2. Создайте архив компакт-дисков приложения

Следующая команда создает hello.js a с помощью привет.список в качестве входных данных:

$ java -Xshare:dump -XX:+UseAppCDS -XX:SharedClassListFile=hello.lst \
    -XX:SharedArchiveFile=hello.jsa -cp hello.jar

3. Используйте архив компакт-дисков приложения

Следующая команда запускает приложение HelloWorld с hello.jsa в качестве входных данных:

$ java -Xshare:on -XX:+UseAppCDS -XX:SharedArchiveFile=hello.jsa \
    -cp hello.jar HelloWorld

APPCD был коммерческой функцией в Oracle JDK для JDK 8 и JDK 9. Теперь он находится в открытом доступе и стал общедоступным.

4. Экспериментальный JIT-компилятор На Основе Java

Graal – это динамический компилятор, написанный на Java, который интегрируется с JVM HotSpot; он ориентирован на высокую производительность и расширяемость. Это также основа экспериментального компилятора AOT (AOT), представленного в JDK 9.

JDK 10 позволяет использовать компилятор Graal в качестве экспериментального JIT-компилятора на платформе Linux/x64.

Чтобы включить Graal в качестве JIT-компилятора, используйте следующие параметры в командной строке java:

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

Обратите внимание, что это экспериментальная функция, и мы не обязательно получим лучшую производительность, чем существующие JIT-компиляторы.

5. Заключение

В этой краткой статье мы сосредоточились на функциях повышения производительности в Java 10 и изучили их.