[Перевод] Оптимизация Java-приложений для Arm64 в облаке

JVM в облаке часто экономит память и CPU по дефолту, из-за чего Spring-сервис использует меньше ресурсов, чем вы ему выделили. В новом переводе от команды Spring АйО разберем, какие существуют базовые настройки кучи, GC и CPU помогают синхронизировать JVM с лимитами контейнера и не переплачивать за простаивающие ресурсы.

https://habr.com/ru/companies/spring_aio/articles/1003602/

#java #kotlin #jvm #jvm_options #jvm_hacks #jvm_monitoring #jvm_hacking #arm64 #aarch64

Оптимизация Java-приложений для Arm64 в облаке

JVM в облаке часто экономит память и CPU по дефолту, из-за чего Spring-сервис использует меньше ресурсов, чем вы ему выделили. В новом переводе от команды Spring АйО разберем, какие существуют базовые...

Хабр

[Перевод] Программирование, ориентированное на данные, для Java: за пределами record-классов

Record-классы удобны, пока класс = «состояние, всё состояние и ничего кроме». Любое отклонение (API канонического конутруктора не равно внутреннему представлению, нужно наследование) ломает «автогенерацию» и паттерн-деструктурирование (destructuring). В новом переводе от команды Spring АйО статьи Brian`а Goetz`а, архитектора Java Language, предлагается следующий шаг в направлении data-oriented programming in Java: классы-носители и интерфейсы-носители (они же Carrier classes & interfaces). Концептуально, carrier классы родились из record-ов путем ослабления части их ограничений. Комментарий от Михаила Поливаха : Друзья, помните, пожалуйста, что данная статья по сути является суммированием обсуждения Carrier классов из JDK Project Amber Mailing List. Я это к тому, что пока непонятно, в какой версии языка carrier классы появятся, и появятся ли они в том виде, в котором представлены в статье. Статью стоит рассматривать как пищу для размышления.

https://habr.com/ru/companies/spring_aio/articles/995824/

#java #jvm #kotlin #jvm_options #jvm_hacks #spring #spring_boot #spring_framework

Программирование, ориентированное на данные, для Java: за пределами record-классов

Record-классы удобны, пока класс = «состояние, всё состояние и ничего кроме». Любое отклонение (API канонического конутруктора не равно внутреннему представлению, нужно наследование) ломает...

Хабр

[Перевод] JVM ещё жива, но уже бесполезна: как Netflix научился убивать её по GC

Вместо того чтобы ждать, пока Java-приложение окончательно "зависнет" из-за GC, инженеры Netflix сделали jvmquake — инструмент, который сам определяет, что JVM уже не спасти, вызывает дамп памяти и аккуратно завершает процесс. Меньше тревог, больше аптайма. Подробности - в новом переводе от команды Spring АйО .

https://habr.com/ru/companies/spring_aio/articles/987116/

#java #kotlin #jvm #jvm_hacks #jvm_options #netflix #spring #spring_boot #spring_framework #springboot

JVM ещё жива, но уже бесполезна: как Netflix научился убивать её по GC

Вместо того чтобы ждать, пока Java-приложение окончательно "зависнет" из-за GC, инженеры Netflix сделали jvmquake — инструмент, который сам определяет, что JVM уже не спасти, вызывает дамп памяти и...

Хабр

[Перевод] Обнаружение взаимоблокировок на JVM с помощью Fray

Команда Spring АйО подготовила перевод про Fray — инструмент для обнаружения и воспроизведения ошибок многопоточности в Java-программах. Основанный на научных исследованиях и написанный на Kotlin, Fray использует технику теневой блокировки для выявления взаимоблокировок и других проблем синхронизации. Он уже доказал свою эффективность на таких проектах, как Kafka, Flink и Lucene.

https://habr.com/ru/companies/spring_aio/articles/976924/

#jvm #java #blocking #kotlin #jvm_hacks #spring #spring_boot #spring_framework #springboot #spring_data

Обнаружение взаимоблокировок на JVM с помощью Fray

Команда Spring АйО подготовила перевод про Fray — инструмент для обнаружения и воспроизведения ошибок многопоточности в Java-программах. Основанный на научных исследованиях и написанный на Kotlin,...

Хабр

[Перевод] JVM: Барьеры, которые подходят любому GC

В новом переводе от команды Spring АйО рассказывается, как сократить время разогрева JVM с помощью ahead-of-time компиляции (в рамках Project Leyden), а также объясняется, почему традиционные GC-барьеры мешают гибкому выбору сборщика мусора. Статья содержит интересное решение — GC-независимые барьеры загрузки , которые можно «пропатчить» в рантайме под конкретный GC, обеспечивая совместимость без переписывания кода.

https://habr.com/ru/companies/spring_aio/articles/949710/

#java #jvm #jit #jitкомпилятор #jitкомпиляция #jvm_hacks #jvm_options #performance #performance_optimization

JVM: Барьеры, которые подходят любому GC

В новом переводе от команды Spring АйО рассказывается, как сократить время разогрева JVM с помощью ahead-of-time компиляции (в рамках Project Leyden), а также объясняется, почему традиционные...

Хабр