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

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

1. обзор

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

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

2. Параллельный полный сборщик мусора для G1

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

Это былоchanged to the parallel mark-sweep-compact algorithm in Java 10, эффективно сокращающее время остановки во время полной сборки мусора.

3. Совместное использование данных классов приложений

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

CDS допускает только загрузчик классов начальной загрузки, ограничивая функцию только системными классами. Приложение CDS (AppCDS) расширяет CDS, позволяя встроенному загрузчику системных классов (a.k.a., «загрузчик классов приложений»), встроенному загрузчику классов платформы и пользовательским загрузчикам классов загружать заархивированные классы. This makes it possible to use the feature for application classes.с

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

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

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

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

2. Создайте архив AppCDS

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

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

3. Используйте архив AppCDS

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

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

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

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

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

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

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

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

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

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

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