Перейти к основному содержимому

66 записей с тегом "JVM"

Посмотреть все теги

· 5 мин. чтения

1. Введение

Сборщик мусора (GC) обрабатывает управление памятью в Java. В результате программистам не нужно явно заботиться о выделении и освобождении памяти.

В Java JVM вначале резервирует определенный объем памяти. Иногда фактическая используемая память значительно меньше зарезервированного объема. В таких случаях мы предпочитаем возвращать лишнюю память ОС.

Весь этот процесс зависит от алгоритмов, используемых для сборки мусора . Следовательно, мы можем выбрать тип GC и JVM в соответствии с требуемым поведением.

В этом руководстве мы рассмотрим управление памятью с помощью GC и его взаимодействие с ОС.

2. Организация памяти JVM

· 6 мин. чтения

1. Обзор

В этом кратком руководстве мы рассмотрим наиболее известные параметры, которые можно использовать для настройки виртуальной машины Java.

2. Явная память кучи — параметры Xms и Xmx

Одним из наиболее распространенных методов, связанных с производительностью, является инициализация динамической памяти в соответствии с требованиями приложения.

Вот почему мы должны указать минимальный и максимальный размер кучи. Для его достижения можно использовать следующие параметры:

· 4 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим распространенные проблемы, с которыми мы можем столкнуться при отправке SSL-запросов.

2. Ошибка хранилища сертификатов

Всякий раз, когда приложение Java открывает SSL-соединение с удаленной стороной, оно должно проверить, заслуживает ли сервер доверия или нет, путем проверки своих сертификатов . Если корневой сертификат не содержится в файле хранилища сертификатов, возникает исключение безопасности:

Untrusted: Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

· 9 мин. чтения

1. Введение

Приложения иногда зависают или работают медленно, и определение основной причины не всегда является простой задачей. Дамп потока предоставляет моментальный снимок текущего состояния запущенного процесса Java . Однако сгенерированные данные включают несколько длинных файлов. Таким образом, нам нужно будет проанализировать дампы потоков Java и найти проблему в большом куске несвязанной информации.

В этом руководстве мы увидим, как отфильтровать эти данные для эффективной диагностики проблем с производительностью. Также мы научимся находить узкие места или даже простые баги.

2. Потоки в JVM

JVM использует потоки для выполнения каждой внутренней и внешней операции. Как мы знаем, процесс сборки мусора имеет свой собственный поток, но и задачи внутри Java-приложения создают свои собственные.

· 11 мин. чтения

1. Обзор

В этой статье мы увидим, как иногда ложное совместное использование может обернуть многопоточность против нас.

Во-первых, мы собираемся начать с теории кэширования и пространственной локальности. Затем мы перепишем параллельную утилиту LongAdder и сравним ее с реализацией java.util.concurrent . На протяжении всей статьи мы будем использовать результаты тестов на разных уровнях, чтобы исследовать влияние ложного обмена.

Часть статьи, связанная с Java, сильно зависит от расположения объектов в памяти. Поскольку эти детали макета не являются частью спецификации JVM и оставлены на усмотрение разработчика , мы сосредоточимся только на одной конкретной реализации JVM: HotSpot JVM. Мы также можем использовать термины JVM и HotSpot JVM взаимозаменяемо на протяжении всей статьи.

2. Кэш-линия и когерентность

· 4 мин. чтения

1. Введение

В этом руководстве мы обсудим причину и возможные способы устранения ошибки java.lang.OutOfMemoryError: невозможно создать новый собственный поток .

2. Понимание проблемы

2.1. Причина проблемы

· 3 мин. чтения

1. Обзор

В этом уроке мы узнаем, что такое корни сборщика мусора (корни GC). Кроме того, мы опишем типы корней GC. После этого мы покажем разницу между корнями GC и живыми объектами.

2. Определение корня GC

Давайте сначала определим, что такое корни GC. Корень GC — это термин, используемый в контексте сборки мусора в Java. Это специальные объекты для сборщика мусора. Как следует из названия, корни GC являются отправными точками для процессов сборщика мусора. Как правило, все объекты, на которые прямо или косвенно ссылаются из корня сборщика мусора, не удаляются сборщиком мусора.

3. Типы корней GC

· 3 мин. чтения

1. Обзор

В этом руководстве мы изучим различные методы для вывода списка всех классов, загруженных в JVM. Например, мы можем загрузить дамп кучи JVM или подключить запущенные приложения к различным инструментам и перечислить все классы, загруженные в этот инструмент. Кроме того, существуют различные библиотеки для выполнения этого программно.

Мы рассмотрим как непрограммные, так и программные подходы.

2. Непрограммный подход

2.1. Использование аргумента виртуальной машины

· 7 мин. чтения

1. Обзор

В Java исключения обычно считаются дорогостоящими и не должны использоваться для управления потоком. Этот учебник докажет, что это восприятие верно, и точно определит, что вызывает проблемы с производительностью.

2. Настройка среды

Прежде чем писать код для оценки стоимости производительности, нам нужно настроить среду для тестирования производительности.

2.1. Ресурс Java Microbenchmark

· 5 мин. чтения

1. Обзор

В дополнение к типичным утилитам разработки, таким как компилятор и среда выполнения, каждый выпуск JDK поставляется с множеством других инструментов. Некоторые из этих инструментов могут помочь нам получить ценную информацию о наших запущенных приложениях.

В этой статье мы увидим, как мы можем использовать такие инструменты, чтобы узнать больше об алгоритме GC, используемом конкретным экземпляром JVM.

2. Образец заявления

В этой статье мы будем использовать очень простое приложение: