В программе лояльности
На товар применяется персональная скидка, промокоды, купоны и сертификаты

Эффективный Java. Тюнинг кода на Java 8, 11 и дальше

Оукс Скотт

Код товара: 4403432
(0 оценок)Оценить
ОтзывНаписать отзыв
ВопросЗадать вопрос
1 / 18
PDF
Нет в наличии
Доставим в
г. Москва
Курьером
Л-Пост
бесплатно от 3 500 ₽
В пункт выдачи
от 77 ₽
бесплатно от 2 000 ₽
Точная стоимость доставки рассчитывается при оформлении заказа
Издательство:
Питер
Оригинальное название:
Java Performance. In-Depth Advice for Tuning and Programming Java 8. 11. and Beyond
Год издания:
2021 г.
Может быть отгружен товар указанного или более позднего года

Отмечено тегами

Описание

Характеристики

Программирование и тестирование обычно принято относить к разным профессиональным сферам. Скотт Оукс — признанный эксперт по языку Java — уверен, что если вы хотите работать с этим языком, то обязаны понимать, как выполняется код в виртуальной машине Java, и знать, какие настройки влияют на производительность.
Вы сможете разобраться в производительности приложений Java в контексте как JVM, так и платформы Java, освоите средства, функции и процессы, которые могут повысить производительность в LTS-версиях Java, и познакомитесь с новыми возможностями (такими как предварительная компиляция и экспериментальные уборщики мусора).
В этой книге вы:
- Узнаете, как платформы и компиляторы Java влияют на производительность.
- Разберетесь c механизмом уборки мусора.
- Освоите четыре принципа получения наилучших результатов при тестировании производительности.
- Научитесь пользоваться JDK и другими инструментами оценки производительности.
- Узнаете как настройка и приемы программирования позволяют минимизировать последствия уборки мусора.
- Научитесь решать проблемы производительности средствами Java API.
- Поймете, как улучшить производительность приложений баз данных Java.
издание
2
количество томов
1
количество страниц
496 стр.
переплет
Мягкая обложка
размеры
235x165x22 мм
цвет
Белый
тип бумаги
офсетная (60-220 г/м2)
формат
70x100/16 (170x240 мм)
ISBN
978-5-4461-1757-4
стандарт
возрастная категория
16+
вес
код в Майшоп
4403432
язык
русский

Содержание

Предисловие
Для кого написана эта книга
Благодарности
От издательства
Глава 1.Введение
Структура книги
Платформы и соглашения
Платформы Java
Аппаратные платформы
Многоядерное оборудование
Программные контейнеры
Производительность: общая картина
Пишите более качественные алгоритмы
Пишите меньше кода
Применяйте преждевременную оптимизацию
Ищите в других местах: база данных всегда
является узким местом
Оптимизация для типичного случая
Итоги
Глава 2. Тестирование производительности
Тестирование реального приложения
Микробенчмарки
Макробенчмарки
Мезобенчмарки
Пропускная способность, пакетирование и время
отклика
Измерения затраченного времени
Измерения пропускной способности
Тесты на определение времени отклика
Дисперсия
Тестируйте рано, тестируйте часто
Примеры хронометражных тестов
JMH
Примеры кода
Итоги
Глава 3. Инструментарий производительности Java
Средства операционной системы и анализ
Использование процессора
Очередь выполнения
Уровень использования диска
Уровень использования сети
Средства мониторинга Java
Основная информация VM
Информация о потоках
Информация о классах
Оперативный анализ уборки мусора
Последующая обработка дампов кучи
Средства профилирования
Профилировщики с выборкой
Инструментальные профилировщики
Блокирующие методы и временная шкала потоков
Профилировщики низкоуровневого кода
Java Flight Recorder
Java Mission Control
Краткий обзор JFR
Включение JFR
Выбор событий JFR
Итоги
Глава 4. Работа с JIT-компилятором
JIT-компиляторы: общие сведения
Компиляция HotSpot
Многоуровневая компиляция
Распространенные флаги компилятора
Настройка кэша команд
Анализ процесса компиляции
Уровни многоуровневой компиляции
Деоптимизация
Флаги компилятора высокого уровня
Пороги компиляции
Потоки компиляции
Встраивание
Анализ локальности
Код для конкретного процессора
Плюсы и минусы многоуровневой компиляции
GraalVM
Предварительная компиляция
Статическая компиляция
Компиляция в низкоуровневый код в GraalVM
Итоги
Глава 5. Знакомство с уборкой мусора
Общие сведения об уборке мусора
Уборщики мусора с учетом поколений
Алгоритмы уборки мусора
Выбор алгоритма уборки мусора
Основная настройка уборщика мусора
Определение размера кучи
Определение размеров поколений
Определение размера метапространства
Управление параллелизмом
Инструменты уборки мусора
Включение протоколирования уборки мусора в JDK
8
Включение протоколирования уборки мусора в JDK
11
Итоги
Глава 6. Алгоритмы уборки мусора
Параллельный уборщик мусора
Настройка адаптивного и статического
определения
размеров кучи
Уборщик мусора G1
Настройка уборщика мусора G1
Уборщик мусора CMS
Настройка для предотвращения сбоев
конкурентного режима
Расширенная настройка
Порог хранения и области выживших
Создание больших объектов
Флаг AggressiveHeap
Полный контроль над размером кучи
Экспериментальные алгоритмы уборки мусора
Конкурентное сжатие: ZGC и Shenandoah
Фиктивный эпсилон-уборщик
Итоги
Глава 7. Практика работы с памятью кучи
Анализ кучи
Гистограммы кучи
Дампы кучи
Ошибки нехватки памяти
Снижение потребления памяти
Уменьшение размеров объектов
Отложенная инициализация
Неизменяемые и канонические объекты
Управление жизненным циклом объекта
Повторное использование объектов
Мягкие, слабые и другие ссылки
Сжатые OOP
Итоги
Глава 8. Практика работы с низкоуровневой
памятью
Потребление памяти
Измерение потребления памяти
Минимизация потребления памяти
Контроль за низкоуровневой памятью
Низкоуровневая память общих библиотек
Настройки JVM для операционной системы
Большие страницы
Итоги
Глава 9. Производительность многопоточных
программ и синхронизации
Многопоточное выполнение и оборудование
Пулы потоков и объекты ThreadPoolExecutor
Назначение максимального количества потоков
Настройка минимального количества потоков
Размеры задач для пула потоков
Определение размера ThreadPoolExecutor
ForkJoinPool
Перехват работы
Автоматическая параллелизация
Синхронизация потоков
Затраты на синхронизацию
Предотвращение синхронизации
Ложное совместное использование данных
Настройки потоков JVM
Настройка размеров стеков потоков
Смещенная блокировка
Приоритеты потоков
Мониторинг потоков и блокировок
Видимость потоков
Вывод информации о заблокированных потоках
Итоги
Глава 10. Серверы Java
Java NIO
Серверные контейнеры
Настройка серверных пулов потоков
Асинхронные серверы REST
Асинхронные исходящие вызовы
Асинхронный HTTP
Обработка JSON
Разбор данных и маршалинг
Объекты JSON
Разбор JSON
Итоги
Глава 11. Практика работы с базами данных
База данных для примера
JDBC
Драйверы JDBC
Пулы подключений JDBC
Подготовленные команды и пулы команд
Транзакции
Обработка итоговых наборов
JPA
Оптимизация записи JPA
Оптимизация операций чтения JPA
КэшированиеJPA
Spring Data
Итоги
Глава 12. Рекомендации по использованию Java SE
API
Строки
Компактные строки
Дублирование и интернирование строк
Конкатенация строк
Буферизованный ввод/вывод
Загрузка классов
Совместное использование данных классов
Случайные числа
ИнтерфейсJNI
Исключения
Журналы
API коллекций Java
Синхронизированные и несинхронизированные
коллекции
Определение размера коллекции
Коллекции и эффективность использования памяти
Лямбда-выражения и анонимные классы
Производительность потоков данных и фильтров
Отложенный перебор
Сериализация объектов
Временные поля
Переопределение сериализации по умолчанию
Сжатие сериализованных данных
Отслеживание дубликатов
Итоги
Приложение. Список флагов настройки

Отзывы

Вопросы

Поделитесь своим мнением об этом товаре с другими покупателями — будьте первыми!

Дарим бонусы за отзывы!

За какие отзывы можно получить бонусы?
  • За уникальные, информативные отзывы, прошедшие модерацию
Как получить больше бонусов за отзыв?
  • Публикуйте фото или видео к отзыву
  • Пишите отзывы на товары с меткой "Бонусы за отзыв"
Правила начисления бонусов
Задайте вопрос, чтобы узнать больше о товаре
Если вы обнаружили ошибку в описании товара «Эффективный Java. Тюнинг кода на Java 8, 11 и дальше» (авторы: Оукс Скотт), то выделите её мышкой и нажмите Ctrl+Enter. Спасибо, что помогаете нам стать лучше!
Ваш населённый пункт:
г. Москва
Выбор населённого пункта