Создание, распределение jvm-объектов и сбор мусора

Механизм CAS (сравнение И обмен): механизм сравнения и обмена для решения проблемы параллелизма при выделении объектной памяти.Методы выделения памяти: коллизия указателей и список свободных.

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

Объект Java содержит следующие вещи:

переработка ГХ

Среди методов определения выживаемости объекта обычно используется алгоритм подсчета ссылок +1, когда объект имеет ссылку. Это относительно просто, но становится проблематичным, когда два объекта указывают друг на друга, поскольку разумно сказать что эти два объекта бесполезны. Объект должен быть мусором и должен быть переработан, но он вызвал взаимоблокировку, поэтому его нельзя переработать. Текущая виртуальная машина использует алгоритм анализа достижимости.

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

 Цитата из Явы:

 

 Сильная ссылка: GC не будет перерабатываться, пока есть сильная ссылка.

Безалкогольный напиток: только когда памяти приложения недостаточно, оно будет переработано

Слабое питье: пока срабатывает ГК, он будет перерабатываться

Принципы выделения объектов для сборки мусора:

1. Еще одним аспектом продвижения возраста является динамическое определение возраста.

Например: от до до старости

Он добавляется из наименьшего возраста в области ТО. Когда он превышает половину памяти настроек ТО, он будет непосредственно перенесен в старый возраст из возраста, в котором добавление заканчивается, к наибольшему возрасту.

2. Существует также проблема возраста. Этот порог устанавливается виртуальной машиной. В большинстве случаев он равен 15. Если он превышает этот порог, она будет повышена.

Почему новое поколение разделено на 3 направления? Это связано с тем, что в переработке нового поколения используется алгоритм копирования, а размеры трех областей равны Eden:from:to=8:1:1, как показано ниже.

 

 Алгоритм сбора мусора:

Алгоритм достижимости корня для поиска неперерабатываемых объектов

Алгоритм копирования: копируйте объекты, которые не перерабатываются, в зарезервированное пространство, а затем собирайте их мусором.

Например: область Эдема нового поколения имеет зарезервированные места s0 и s1 в области Эдема.Когда область Эдема заполнится, запустится GC.

Старое поколение использует алгоритм очистки, основная причина в том, что старое поколение по сути живое и нет необходимости копировать.

Вывоз мусора:

 Молодой GC перерабатывает только новое поколение, тогда как полный GC перерабатывает старое поколение и область метода.

Вопрос 1: Повысит ли эффективность внедрение нового поколения?

 

рекомендация

отblog.csdn.net/xueyoubangbang/article/details/121517474
рекомендация