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

В настоящее время:

По поводу сборщиков мусора.

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

По сути, существует четыре вида сборщиков мусора:

  1. Серийный сборщик мусора.
  2. Параллельный сборщик мусора.
  3. Сборщик мусора CMS.
  4. Сборщик мусора G1.

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

По всей вероятности, они подробно рассматриваются в рамках обучения Java. Мы увидим здесь, основные моменты этих

1.Серийный сборщик мусора:

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

Включите аргумент — XX:+UseSerialGC JVM, чтобы использовать последовательный сборщик мусора.

2. Параллельный сборщик мусора:

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

3. Сборщик мусора CMS:

Сборщик мусора Concurrent Mark Sweep (CMS) использует многочисленные потоки для проверки памяти кучи, чтобы пометить экземпляры для удаления и после этого очистить отмеченные экземпляры. Сборщик мусора CMS как бы удерживает все потоки приложения в сопутствующих двух ситуациях:

- при обозначении упоминаемых объектов в пространстве временной эры.

- на случай, если при сборке мусора происходит параллельная корректировка кучи памяти.

При проверке с параллельным сборщиком мусора сборщик CMS использует больше ЦП, чтобы гарантировать лучшую пропускную способность приложения. Если мы можем выделить больше ЦП для повышения производительности, сборщик мусора CMS является предпочтительным решением по сравнению с параллельным сборщиком.

Включите аргумент JVM XX:+USeParNewGC, чтобы использовать сборщик мусора CMS.

4. Сборщик мусора G1:

Сборщик мусора G1 используется для больших областей кучи памяти. Он изолирует память кучи на области и выполняет сбор внутри них параллельно. Кроме того, G1 сжимает свободное пространство кучи на ходу вскоре после восстановления памяти. Как бы то ни было, сборщик мусора CMS уплотняет память при остановке мира (STW) обстоятельствах. Сборщик G1 сначала отдает приоритет региону с учетом наибольшего количества мусора.

Включите аргумент –XX:+UseG1GC JVM, чтобы использовать сборщик мусора G1.

Продвижение в Java 8:

Включите аргумент JVM — XX:+UseStringDeduplication при использовании сборщика мусора G1. Это расширяет память кучи, удаляя повторяющиеся значения String в одиночный массив char[]. Эта опция представлена ​​в Java 8 и 20.

Учитывая все более четырех типов сборщиков мусора Java, какой из них использовать, зависит от ситуации с приложением, доступного оборудования и требований к пропускной способности.

Продолжайте обновлять свои знания Java с помощью обучения Java в Пуне, которое проводится в лучшем институте Java в Пуне.

вам также может понравиться это:

В чем разница между методами final, finally и finalize?

10 лучших вопросов для собеседования по Java