Механизм 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: Повысит ли эффективность внедрение нового поколения?