Рубрики
Без рубрики

Сборка Мусора Java

Всем привет, в сегодняшнем посте я собираюсь обсудить сборку мусора для Java. Для тех, кто… С тегами для начинающих, java, память.

Всем привет, в сегодняшнем посте я собираюсь обсудить сборку мусора для Java. Для тех, кто не знает, сборка мусора – это процесс очистки памяти в приложении во время выполнения. Поскольку объекты создаются в течение жизненного цикла программы, они в конечном итоге займут слишком много места. В таких языках программирования, как C или C++, программистам придется самостоятельно управлять памятью. Java отличается тем, что она обрабатывает его самостоятельно и удаляет объекты, на которые больше нет ссылок автоматически в JVM.

Каждая JVM может реализовать свою собственную форму сборки мусора, если выбранный тип соответствует требованиям JVM. Наиболее распространенным сборщиком мусора является Hotspot от Oracle. Hotspot использует метод сборщика мусора поколений, который классифицирует объекты по количеству циклов сбора, которые он пережил. Философия горячих точек заключается в том, что большинство объектов недолговечны, и для повышения эффективности большинство проходов сборщика мусора должны просто просматривать более новые объекты, так как они, скорее всего, будут удалены. Глядя на рисунок ниже, Hotspot разбивает кучу памяти на разделы, называемые молодым поколением, старым поколением и постоянным поколением.

Молодое поколение состоит из блоков eden, S0 и S1. Эдем – это место, где хранятся новые объекты. Они часто удаляются на этом этапе, так как многие из них больше не используются в каждом цикле сбора. Объекты, которые живут после первого цикла, перемещаются в S0 или S1 в зависимости от того, какой из них является блоком выживших для вращения.

Объекты, уже находящиеся в одном из блоков выживших, перемещаются между ними вместе с каждым вращением, которое они переживают.

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

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

Источники:

  1. Альтватер, А. (2017, 11 мая). Что такое Сборка мусора Java? Лучшие практики, Учебные пособия и многое Другое. Складывать в стопки. https://stackify.com/what-is-java-garbage-collection/#:~:text=Java%20garbage%20collection%20is%20the,Machine%2C% 20 JVM20JVM%20for%20short.&текст=%20гарбаж%20коллектор%20файнды%20это, их%20то%20фри%20уп%20память .

  2. Оракул. (н.д.). Основы Сборки Мусора Java. https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html .

Оригинал: “https://dev.to/jryther/java-garbage-collecting-4098”