Общий сборщик мусора Java8

Общий сборщик мусора Java8

Основные понятия сборки мусора:

Сбор мусора — это автоматизированный механизм управления памятью, который обнаруживает и освобождает ресурсы памяти, которые больше не используются программами, чтобы освободить пространство памяти, используемое для хранения объектов. В Java сбор мусора в основном реализуется следующими способами:

  1. Тип ссылки: доступ к объектам в Java и управление ими осуществляется по ссылке. Типы ссылок включают сильные ссылки, мягкие ссылки, слабые ссылки и фантомные ссылки. Основная цель сборки мусора — избавиться от объектов, на которые больше не указывают никакие ссылки, чтобы освободить занимаемую ими память.
  2. Жизненный цикл объекта: объекты Java имеют жизненный цикл от создания до уничтожения. Объект становится недоступным, когда на него больше не указывают сильные ссылки. Сборщик мусора определит эти недоступные объекты и пометит их как объекты мусора.
  3. Алгоритм Mark-Sweep: это один из самых простых алгоритмов сборки мусора. На этапе маркировки сборщик мусора просматривает все доступные объекты и помечает их как живые объекты. Затем на этапе очистки сборщик мусора сканирует всю память, освобождая пространство, занятое немаркированными объектами.
  4. Сборщик мусора: в JVM существуют различные сборщики мусора, такие как последовательный сборщик, параллельный сборщик, сборщик CMS, сборщик G1 и т. д. Эти сборщики используют разные алгоритмы и стратегии сборки мусора для удовлетворения потребностей различных сценариев.

Сборщик мусора Java 8:

Несколько основных сборщиков мусора в Java 8, включая Serial, Parallel, CMS (параллельная пометка) и G1 (сначала сбор мусора). Каждый сборщик мусора имеет разные принципы работы, преимущества и недостатки, а также применимые сценарии.

  1. Последовательный: Самый ранний сборщик мусора , принцип работы: Последовательный сборщик мусора использует один поток для сбора мусора, то есть во время сбора используется только одно ядро ​​ЦП. Он использует алгоритм пометки-копирования для сбора мусора, то есть копирование уцелевших объектов в новую область памяти, а затем очистку всех объектов в старой области. Преимущества: простота и эффективность, подходит для однопоточных приложений или небольших приложений, позволяет минимизировать время паузы. Недостатки: невозможно использовать все преимущества многоядерных процессоров, могут возникать длительные паузы. Применимые сценарии: подходит для однопоточных небольших приложений или приложений с низким уровнем параллелизма.
  2. Параллельный: многопоточность , принцип работы: Параллельный сборщик мусора также использует алгоритм пометки-копирования, но в отличие от последовательного он использует многопоточность для параллельного выполнения сборки мусора, чтобы в полной мере использовать многоядерные процессоры. Преимущества: по сравнению с последовательным интерфейсом, параллельный позволяет лучше использовать многоядерные процессоры, быстрее перезагружается и подходит для приложений среднего масштаба. Недостатки: Это может привести к длительному времени паузы, что не подходит для приложений со строгими требованиями к времени паузы. Применимые сценарии: подходит для приложений среднего масштаба, требующих высокой пропускной способности и допускающих определенное время паузы.
  3. CMS (Concurrent Mark-Sweep) , самый классический сборщик мусора, открыл эпоху одновременной маркировки : Принцип работы: Сборщик мусора CMS использует алгоритм очистки пометок. В отличие от последовательного и параллельного режимов, CMS использует как пометку, так и очистку. Запускаются несколько потоков. параллельно, чтобы сократить время паузы. Он одновременно маркирует живые объекты на этапе маркировки, а затем одновременно очищает неиспользуемые объекты на этапе очистки. Преимущества: короткое время паузы, подходит для средних и крупных приложений, требующих небольшого времени паузы. Недостатки: это может вызвать определенную нагрузку на ЦП из-за параллелизма, что может вызвать проблемы фрагментации и потребовать частой полной сборки мусора. Применимые сценарии: подходит для средних и крупномасштабных приложений, которые предъявляют высокие требования ко времени паузы, но необходимо уделять внимание проблемам фрагментации.
  4. Сборщик мусора G1 (сначала мусор): Принцип работы: сборщик мусора G1 использует концепцию генерации для разделения кучи памяти на несколько областей, каждая из которых может быть областью Эдема, Выжившего или Старой области. Он использует многопоточный параллелизм для сборки мусора и динамически корректирует стратегию сбора между различными регионами, стремясь сократить время паузы и проблемы фрагментации. Преимущества: более короткое время паузы, лучший контроль над использованием памяти и поведением сборки мусора, подходит для больших приложений. Недостатки: относительно сложный, требует дополнительной настройки конфигурации, может вызвать некоторое дрожание производительности. Применимые сценарии: подходит для крупномасштабных приложений, которые предъявляют определенные требования к времени паузы и могут выдерживать определенные колебания производительности.

Подведем итог:

Поскольку версия Java продолжает выполнять итерации, производительность сборщика мусора также улучшается. Однако большинство версий java8 по умолчанию используют Parallel Scavenge (новое поколение) + Parallel Old (старое поколение).Рекомендуется вручную включить сборщик G1, параметр jvm: -XX:+UseG1GC .

Guess you like

Origin blog.csdn.net/Arhhhhhhh/article/details/132282098