Java 10 Улучшает Сборку Мусора


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

Предполагается, что это будет краткосрочная версия, а Java 11, которая должна выйти в сентябре, станет следующей версией, которая получит долгосрочную поддержку. 

Первое улучшение, которое следует отметить для этой новой версии,-это поддержка вывода типа локальной переменной. Это расширяет вывод типа на объявления локальных переменных с инициализаторами. Эта функция позволит, например, такие объявления, как:

var list = new ArrayList(); // выводит ArrayList

var stream = list.stream(); // выводит поток

Кроме того, был введен новый интерфейс чистого сборщика мусора с целью улучшения изоляции исходного кода различных сборщиков мусора. Это предназначено для обеспечения лучшей модульности внутреннего кода GC HotSpot и облегчения добавления нового GC в HotSpot без нарушения текущей базы кода. Также был добавлен параллельный полный GC для G1, чтобы улучшить наихудшие задержки G1, сделав полный GC параллельным. Сборщик мусора G1 был установлен по умолчанию в JDK 9, но не был параллельным.

Еще одно изменение позволяет использовать JIT-компилятор на основе Java, Graal, в качестве экспериментального JIT-компилятора на платформе Linux/x64. Graal-это JIT-компилятор на основе Java, который является основой экспериментального компилятора AOT, представленного в JDK 9. Это изменение является следующим шагом в исследовании возможности JIT на основе Java для JDK.

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

Другие улучшения в новой версии включают дополнительные расширения языковых тегов Unicode и выделение кучи на альтернативных устройствах памяти. Это последнее изменение означает, что виртуальная машина HotSpot может выделить кучу объектов Java на альтернативном устройстве памяти, таком как NV-DIMM, указанном пользователем.


Добавить комментарий