ebook img

Java: оптимизация программ. Практические методы повышения производительности приложений в JVM PDF

450 Pages·2019·59.584 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Java: оптимизация программ. Практические методы повышения производительности приложений в JVM

Java: оптимизация программ Практические методы повышения производительности приложений в JVM Optimizing Java Practical Techniques for lmproving JVM Application Performance Benjamin J Evans, James Gough, and Chris Newland Beijing • Boston • Farnham • Sebastopol • Tokyo o·REILLYfi) Java: оптимизация программ Практические методы повышения JVM производительности приложений в Бенджамин Эванс, Джеймс Гоф Kpuc и Ньюланд Москва · Санкт-Петербург 2019 ББК 32.973.26-018.2.75 Э14 УДК 681.3.G7 ООО "Диалектика" Зав. редакцией С.Н. Тригуб Перевод с английского и редакция канд. техн. наук И.В. Карася Рецензент канд. физ.-мат. наук Д. Е. Намиот По общим вопросам обращайтесь в издательство "Диалектика" по адресу: [email protected], http://www.dialektika.com Эванс, Бенджамин Дж" Гоф, Джеймс, Ньюланд, Крис. Э14 Java: оптимизация программ. Практические методы повышения произво- дительности приложений в JVM. : Пер. с англ. - СПб. : ООО "Диалектика", 2019. - 448 с.: ил. - Парал. тит. англ. ISBN 978-5-907114-84-5 (рус.) ББК 32.973.26-018.2.75 Все названия nрограммных nродуктов являются зарегистрированными торговыми марками соответству­ ющих фирм. Никакая часть настоящего издания ни в каких целях не может быть восnроизведена в какой бы то ни было форме и какими бы то ни было средствами, будь то электронные или механические, включая фотоко­ nирование и запись на магнитный носитель, если на это нет письменного разрешения издательства O'Reilly Media, !пс. Copyright © 2019 Ьу Dialektika Compнter PнЬlishing Ltd. Authorized Russian translation of the English edition of Optimizing fava: Pmctical Techniques for lmproving JVM Application Performance (ISBN 978-1-492-02579-5) © 2018 Benjamin /. Evans, James Gough, and Chris Newland. This translation is puЬlished and sold Ьу permission of O'Reilly Media, lnc" which owns or controls all rights to pнЬlish and sell the same. All rights reserved. No part of this book may Ье reproduced or transmitted in any form or Ьу any means, elec tronic or mechanical, inclнding photocopying, recording, or Ьу any information storage or retrieval system, without the prior written permission of the copyright owner and the PuЬlisher. Научно-популярное издание Бенджамин Дж. Эванс, Джеймс Гоф, Крис Ньюланд Java: оптимизация программ. Практические методы повышения производительности приложений в JVM Подписано в печать 31.01.2019. Формат 70х100/16. Гарнитура Times. Ус11. печ. 11. 36,12. Уч.-изд. л. 24,0. Тираж 300 экз. Заказ № 1203. Отпечатано в АО "Первая Образцовая типография" Филиал "Чеховский Печатный Двор" 142300, Московская область, г. Чехов, ул. Полиграфистов, д. 1 Сайт: www.chpd.щ E-mail: sales@chpd.щ тел. 8 (499) 270-73-59 ООО "Диалектика': 195027, Санкт-Петербург, Магнитогорская ул., д. 30, лит. А, пом. 848 ISBN 978-5-907114-84-5 (рус.) © 2019 ООО "Диа11ектика" ISBN 978-1-492-02579-5 (англ.) © 2018 Benjamin /. Evans, james Goнgh, and Chris Newland. Оrлавление Введение 21 Гnава 1. Оптимизация и производительность 25 Гnава 2. Обзор JVM 39 Гnава 3. Аппаратное обеспечение и операционные системы 59 Гnава 4. Паттерны и антипаттерны тестирования производительности 87 Гnава S. Микротесты и статистика 115 Гnава 6. Сборка мусора 145 Гnава 7. Вглубь сборки мусора 171 Гnава 8. Протоколирование, мониторинг, настройка и инструменты сборки мусора 203 Гnава 9. Выполнение кода в JMV 231 Гnава 10. JIТ-компиляция 257 Гnава 11. Языковые методы повышения производительности 295 Гnава 12. Методы повышения производительности параллельной работы 325 Гпава 13. Профилирование 361 Гnава 14. Высокопроизводительное протоколирование и обмен сообщениями 393 Гnава 1S. Java 9 и будущие версии 421 Предметный указатеnь 445 Содержание Об авторах 16 Об изображении на обложке 17 Предис11овие 18 Введение 21 Соглашения, принятые в этой книге 21 Использование примеров кода 22 Благодарности 22 Ждем ваших отзывов! 24 Г11ава 1. Оптимизация и производительность 25 Производительность Java - ошибочный подход 25 Обзор производительности Java 27 Исследование производительности как экспериментальная наука 28 Систематизация производительности 30 Пропускная способность 30 Задержка 31 Нагрузка 31 Использование ресурсов (утилизация) 31 Эффективность 32 Масштабируем ость 32 Деградация 32 Связи между наблюдаемыми характеристиками 33 Графики производительности 34 Резюме 38 Г11ава 2. Обзор JVM 39 Интерпретация и загрузка классов 39 Выполнение байт-кода 41 Введение в HotSpot 45 Введение в JIТ-компиляцию 47 Управление памятью в JVM 49 Многопоточность и модель памяти Java 50 Встреча с JVM 51 Замечания о лицензиях 53 Мониторинг и инструментарий JVM 54 VisualVM 55 Резюме 57 Глава 3. Аппаратное обеспечение и операционные системы 59 Введение в современное аппаратное обеспечение 60 Память 61 Кеши памяти 61 Возможности современных процессоров 67 Буфер быстрого преобразования адреса 67 Предсказание ветвлений и упреждающее выполнение 68 Аппаратные модели памяти 68 Операционные системы 70 Планировщик 70 Вопросы измерения времени 72 Переключения контекстов 73 Простая модель системы 75 Основные стратегии обнаружения источников проблем 76 Использование процессора 77 Сборка мусора 79 I/O 80 Механическое взаимопонимание 82 Виртуализация 83 JVM и операционная система 84 Резюме 86 Глава 4. Паттерны и антипаттерны тестирования производительности 87 Типы тестов производительности 87 Тест задержки 88 Тест пропускной способности 89 Тест нагрузки 89 Стресс-тест 90 7 Содержание Тест на долговечность 90 Тест планирования нагрузки 90 Тест деградации 90 Примеры наилучших практик 91 Нисходящий подход к производительности 92 Создание тестовой среды 92 Определение требований к производительности 93 Вопросы, специфичные для Java 94 Тестирование производительности как часть жизненного цикла разработки программного обеспечения 95 Антипаттерны тестирования производительности 95 Скука 96 Заполнение резюме 97 Давление коллег 97 Недостаток понимания 97 Неверно понятая/несуществующая проблема 98 Каталог антипаттернов производительности 98 Отвлекаться на блестки 98 Отвлечение простотой 99 Мастер настройки производительности 100 Настройка по совету 102 Козел отпущения 103 Отсутствие общей картины 104 Среда UAT - моя настольная машина 106 Сложность получения реальных данных 107 Когнитивные искажения и тестирование производительности 109 Упрощенное мышление 110 110 Искажение подтверждения Туман войны (искажение действий) 112 112 Искажение риска Парадокс Эллсберга 113 114 Резюме Глава S. Микротесты и статистика 115 Введение в измерение производительности Java 116 Введение в JMH 120 8 Содержание Не занимайтесь микротестированием, если можете найти причину проблем (быль) 120 Эвристические правила, когда следует применять микротесты 121 Каркас JMH 123 Выполнение тестов производительности 124 Статистика производительности JVM 131 Типы ошибок 131 Статистика, отличная от нормальной 136 Интерпретация статистики 140 Резюме 144 Глава 6. Сборка мусора 145 Алгоритм маркировки и выметания 146 Глоссарий сборки мусора 148 Введение в среду времени выполнения HotSpot 149 Представление объектов во время выполнения 150 Корни и арены сборки мусора 153 Выделение памяти и время жизни 154 Слабая гипотеза поколений 155 Сборка мусора в HotSpot 157 Выделение памяти, локальное для потока 157 Полусферическая сборка 159 Многопоточные сборщики мусора 160 Многопоточная сборка юного поколения 161 Старые многопоточные сборки мусора 161 Ограничения многопоточных сборщиков 163 Роль выделения памяти 165 Резюме 170 Гnава 7. Вглубь сборки мусора 171 Компромиссы и подключаемые сборщики мусора 171 Теория параллельных сборщиков мусора 173 Точки безопасности JVM 17 4 Трехцветная маркировка 176 ln смs Как работает CMS 180 Основные флаги JVM для настройки CMS 182 9 Содержание

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.