Java: оптимизация программ. Практические методы повышения производительности приложений в JVM
Настройка производительности — наука экспериментальная, но это не означает, что инженеры должны прибегать к догадкам и фольклору, чтобы выполнить свою работу (хотя часто случается именно так). С помощью этой практической книги разработчики средней и высокой квалификации, работающие со сложными стеками технологий, научатся настраивать высокую производительность Java-приложений, используя количественный, поддающийся проверке подход.
В большинстве информационных ресурсов о производительности, как правило, обсуждаются теория и внутреннее устройство виртуальных машин Java, но в этой книге основное внимание уделяется практическим возможностям настройки производительности путем изучения широкого ряда аспектов. В книге нет простых рецептов, советов и трюков или алгоритмов. Настройка производительности — это процесс внесения изменений и измерения полученных результатов, требующий усердия.
- Узнайте, как принципы и технологии Java наилучшим образом используют современные аппаратные средства и операционные системы.
- Исследуйте различные тесты производительности и распространенные антипаттерны, которые могут завести вашу команду в тупик.
- Изучите ловушки измерений показателей производительности Java и недостатки микротестирования.
- Погрузитесь в сборку мусора, протоколирование, мониторинг, настройки и инструменты JVM.
- Исследуйте JIT-компиляцию и методы повышения производительности в языке Java.
- Изучите аспекты производительности API коллекций и вопросы параллельных вычислений в Java.
Об авторах:
Бенджамин Эванс — соучредитель и член команды технологов jClarity, стартапа про производству инструментария для работы в области производительности, призванного помочь командам разработчиков на Java.
Джеймс Гуф — разработчик на Java и автор книг. Работает в Morgan Stanley над созданием бизнес-приложений.
Крис Ньюланд — старший разработчик и руководитель команды в ADVFN, где он использует Java для обработки данных фондового рынка в режиме реального времени. Также является изобретателем JITWatch.
"За последние 20 лет я потратила немало времени на понимание деталей того, что происходит внутри JVM, но я научилась кое-чему новому, читая эту книгу. Она хорошо написана, легко читается и содержит массу полезной информации как для начинающего программиста, так и для профессионала. Независимо от того, на чем вы работаете, на выделенном сервере с двумястами ядер или на небольшой машине с ограниченными ресурсами под управлением Linux, эта книга поможет вам получить максимальную отдачу от вашего Java-приложения".
—Кристин Флуд (Christine H. Flood) Red Hat, Inc.
Введение 21
Глава 1. Оптимизация и производительность 25
Глава 2. Обзор JVM 39
Глава 3. Аппаратное обеспечение и операционные системы 59
Глава 4. Паттерны и антипаттерны тестирования производительности 87
Глава 5. Микротесты и статистика 115
Глава 6. Сборка мусора 145
Глава 7. Вглубь сборки мусора 171
Глава 8. Протоколирование, мониторинг, настройка и инструменты сборки мусора 203
Глава 9. Выполнение кода в JMV 231
Глава 10. JIT-компиляция 257
Глава 11. Языковые методы повышения производительности 295
Глава 12. Методы повышения производительности параллельной работы 325
Глава 13. Профилирование 361
Глава 14. Высокопроизводительное протоколирование и обмен сообщениями 393
Глава 15. Java 9 и будущие версии 421
Предметный указатель 445