Сборка мусора в Java: все, что вам нужно знать



Эта статья о сборке мусора в Java дает вам четкое представление о том, как она работает, ее типах и различных методах при сборке мусора в Java.

- это язык программирования общего назначения, и если вы столкнетесь с ситуацией, когда в вашей программе есть неиспользуемые данные, и вы не знаете, как с ними обращаться, вам пригодится сборка мусора в Java. Итак, я пишу эту статью, чтобы помочь вам с этими функциями.

Я буду освещать темы в следующем порядке:





Давайте начнем!

Что такое сборка мусора в Java?

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



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

  • Программы, которые не освобождают память, могут в конечном итоге выйти из строя, когда в системе не останется памяти для распределения. Считается, что все эти программы имеют утечку памяти.
  • Сборка мусора в Java происходит автоматически в течение всего жизненного цикла программы, что устраняет необходимость освобождать память и, следовательно, предотвращает утечки памяти.
  • Такие методы, как свободный() в C и Удалить() в C ++ используются, но в Java это выполняется автоматически. Так, обеспечивает лучшее управление памятью.

Теперь давайте разберемся, как эта автоматическая сборка мусора работает в Java.

Заметка : Объект считается имеющим право на сборку мусора, если он недоступен.



Как работает сборка мусора?

Сборка мусора - это процесс работы с памятью кучи, а также отметка или определить недостижимые объекты и уничтожить их уплотнением.

Сборка мусора в Java - это автоматический процесс, и программисту не нужно явно отмечать объекты для удаления. Реализация в основном находится в . Каждая JVM может реализовать сборку мусора. Единственное требование - он должен соответствовать спецификации JVM.

Несмотря на то, что доступно множество JVM, Oracle HotSpot на сегодняшний день является наиболее распространенным, поскольку предлагает надежный и продуманный набор опций сборки мусора.

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

Все сборщики мусора HotSpot реализуют стратегию сбора мусора по поколениям, которая классифицирует объекты по возрасту. Обоснование генеральной сборки мусора заключается в том, что большинство объектов недолговечны и будут готовы к сборке мусора вскоре после создания.

Теперь давайте посмотрим, какие существуют типы сборщиков мусора.

Типы сборщиков мусора

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

Всего существует 4 типа сборщиков мусора.

  • Серийный сборщик мусора (GC) :Все события сборки мусора выполняются последовательно в одном потоке. Сжатие выполняется после каждой сборки мусора.
  • Параллельный / пропускной GC: Для незначительной / небольшой сборки мусора используется несколько потоков. Один поток используется для основной сборки мусора и сжатия старого поколения. Кроме того, вариант Parallel использует несколько потоков для основной сборки мусора и сжатия старого поколения.
  • Сборщик CMS :Несколько потоков используются для небольшой / второстепенной сборки мусора с использованием того же алгоритма, что и Parallel. Большая часть сборки мусора является многопоточной, но CMS работает одновременно с процессами приложения, чтобы минимизировать события приложения. Уплотнение не производится.
  • Коллектор G1 :Этот сборщик мусора в основном предназначен для замены CMS. Он является параллельным и параллельным, как CMS, но работает совсем иначе, чем старые сборщики мусора.

Давайте разберемся в преимуществах сборки мусора в Java.

Преимущества

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

Лучшие практики

Лучший способ адаптироваться к сборке мусора Java - это установить флаги на JVM. У флагов есть возможность настроить сборщик мусора, который будет использоваться. Это помогает сделать его наиболее подходящим для внутренней обработки, где допустимы длительные паузы для сборки мусора.

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

Давайте взглянем на эту программу.

class Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Значение a =' + a) System.out.println ('Значение b =' + b)} public static void main (String args []) {Edureka e1 = new Edureka () Edureka e2 = new Edureka () e1.setData (1,2) e2.setData (3, 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData ()}}

В этом случае двасоздаются объекты и две ссылочные переменные. Если вы добавите еще одну команду e3 = Null,две ссылочные переменные будут указывать на один и тот же объект. И если нет ссылки на переменную, e3 = e2e3.showData () На этом этапе нет ссылок, указывающих на объект, и он становится пригодным для сборки мусора.

На этом мы подошли к концу статьи «Сборка мусора в Java». Мы узнали, как удалять неиспользуемые объекты в куче и различные типы коллекций.

Если вы нашли эту статью «Сборка мусора в Java», ознакомьтесь с от Edureka, надежной компании по онлайн-обучению с сетью из более чем 250 000 довольных учащихся по всему миру. Мы здесь, чтобы помочь вам на каждом этапе вашего пути, мы разработали учебную программу, предназначенную для студентов и профессионалов, которые хотят стать Java-разработчиком.

двоичный в десятичный код Java

Есть вопрос к нам? Пожалуйста, укажите это в комментариях к «Сборке мусора в Java». ' и мы свяжемся с вами как можно скорее.