Лауренциу Спилкэ - Java: устранение проблем
Название: | Java: устранение проблем | |
Автор: | Лауренциу Спилкэ | |
Жанр: | Учебники и самоучители по компьютеру, Java, Java Script | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Java: устранение проблем"
В этой книге представлены практические методики исследования и улучшения незнакомого кода. Вы узнаете о том, как определять скрытые зависимости, выявлять главные причины критических сбоев и аварийных завершений приложений, а также интерпретировать неожиданные результаты. Осваивайте профилирование и отладку и начинайте исследовать, как в действительности работают Java-приложения.
Издание подойдет для Java-разработчиков средней квалификации.
«Наконец-то вышла книга, которая демонстрирует, как устранять проблемы и исследовать Java-приложения в производственной среде! Она определенно может спасти положение!»
Атул Шринивас Хот, SquareOne Insights
Читаем онлайн "Java: устранение проблем". [Страница - 128]
стека (см. рис. E.13). Обычно ссылки из стека не приводят к утечкам памяти, поскольку (как отмечено в разделе E.2) уровень стека автоматиче-
E.4. Метапространство – локация памяти для хранения типов данных 349
ски удаляется, когда выполнение достигает конца блока кода, для которого
приложение создало этот уровень. Но в особых случаях в сочетании с другими проблемами ссылки из стека также могут стать причиной беспокойства. Допустим, что существует взаимоблокировка, препятствующая выполнению всего блока кода в целом. Соответствующий уровень в стеке не
будет удален, и, если в нем есть ссылки на объекты, это также может стать
утечкой памяти.
Может существовать ссылка на объект
из переменной, хранящейся в стеке потока.
T1
Куча
В этом случае сборщик мусора
не может удалить объект
до тех пор, пока не будет
удалена ссылка из стека.
Рис. E.13. Переменная в стеке также может ссылаться на экземпляр в куче,
который невозможно удалить, пока все ссылки на него (включая ссылки
из стека) не будут удалены
E.4. Метапространство – локация памяти
для хранения типов данных
Метапространство – это локация памяти, которую JVM использует для
хранения типов данных, необходимых для создания экземпляров, хранящихся в куче (см. рис. E.14). Приложению нужна эта информация для
обработки экземпляров объектов в куче. Иногда при определенных условиях исключение OutOfMemoryError может воздействовать и на метапространство. Если метапространство заполнено до отказа и больше нет
памяти для того, чтобы приложение сохранило новые типы данных, то
приложение генерирует исключение OutOfMemoryError, сигнализирующее
о том, что метапространство переполнено. По своему опыту отмечу, что
такие ошибки весьма редки, тем не менее я должен предупредить вас о
возможности их возникновения.
350
Приложение E. Управление памятью в Java-приложениях
Куча может содержать несколько
экземпляров объектов нескольких типов.
Куча
Метапространство
Метаданные класса Cat
Метаданные класса Owner
Метапространство содержит информацию,
которая сообщает JVM, как интерпретировать
и создавать экземпляры, обнаруженные в куче.
Рис. E.14. Метапространство – это локация памяти, в которой
приложение хранит дескрипторы типов данных. В нем содержится
вспомогательная информация, используемая для определения
экземпляров, хранящихся в куче
Предметный указатель
Символы
_Consumer, поток 217, 225
_Hlk139972743Дамп потоков_Hlk139972743
чтение
в виде простого текста 249
_Producer, поток 217, 225
дамп потоков, пример 250
-agentlib:jdwp, параметр для подключения агента
отладчика 94
-Xms, ключ JVM, минимальный начальный размер
кучи 160
-Xmx, ключ JVM, максимальный размер кучи 160
-XX:MaxMetaspaceSize, ключ JVM, размер
метапространства 161
А
Анализ
кода 22
после аварии 26
проблемы с производительностью 33
Аспект (в Spring) 52
изменение выполнения кода 55
Б
Блокировка 216.
в многопоточной архитектуре 216
каскадная 255
потока 216
анализ 222
монитор 218
В
Взаимоблокировка 240, 333
дамп потоков 241
динамическая (активная) 334
Выборка выполняемого кода 164
Выходные данные 27
некорректные 31
Г
Гейзенбаг 29
Гейзенберга
выполнение 29
Гейзенберг, Вернер (Heisenberg, Werner) 30
Генерация 268
Голодание (зависание) 335
Граф вызовов 206
Д
Дамп кучи
использование консоли OQL для запроса 279
конфигурирование приложения 270
поиск утечек памяти 268
получение в командной строке 274
чтение 275
VisualVM 275
Дамп потоков 240
время использования ЦП 249
генерация
из командной строки 245, 247
с использованием профилировщика 243
идентификатор ID внутреннего системного
потока 249
идентификатор ID потока 249
импортирование в профилировщик 247
имя потока 249
имя состояния 249
общее время выполнения 249
описание состояния 249
приоритет потока 249
сравнение с профилированием
блокировки 251
трассировка стека 249
чтение 249
fastThread 256
с использованием инструментальных
средств 256
352
Предметный указатель
Динамический прокси 172
К
Код
чтение 42
Журнал 108
анализ внутренней логики 43
анализ проблем в многопоточной
Командная строка
архитектуре 117
генерация дампа потоков 245
анализ проблемы 111
поиск идентификатора ID процесса 245
время выполнения конкретной инструкции 116 Куча 346
идентификация --">
Книги схожие с «Java: устранение проблем» по жанру, серии, автору или названию:
С А Сухов - Основы программирования на Java Жанр: Учебники и самоучители по компьютеру Год издания: 2006 |
Игорь Николаевич Блинов, Валерий Станиславович Романчик - Java from EPAM : учебно-методическое пособие Жанр: Учебники и самоучители по компьютеру Год издания: 2020 |
Вячеслав Олегович Рузов - Мировой опыт разрешения семейных проблем Жанр: Психология Год издания: 2005 |