что такое логика сборки мусора в памяти Survivor.- Это зависит от времени создания объектов или от частоты использования - PullRequest
0 голосов
/ 27 ноября 2018

Сборщик мусора собирает объекты после 8 проходов между Survivor1 и Survivovor2.8 не фиксируется, это может быть меньше также в зависимости от размера кучи.Мой вопрос, что такое логика удаления после 8 проходов.Является ли это основанным на времени создания, я имею в виду удаление старых объектов или основанным на частоте использования, я имею в виду, что менее часто используемый сборщик мусора сначала.Если есть основанная частота, что является минимальным пределом.

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Выжившие пробелы предоставлены, чтобы дать объектам больше шансов быть собранными, прежде чем они будут продвинуты в старое поколение (таким образом уменьшая нагрузку на сборщика для старого поколения.)

Объекты, которые все еще живут вПространство eden, когда происходит второстепенный GC, в основном копируется в пространство выживших «to», вместе с любыми объектами, на которые все еще есть ссылки в пространстве выживших from.Большие объекты, которые не помещаются в пространстве выживших, копируются непосредственно в старый ген (это владение).Сколько раз объект копируется между оставшимися в живых пространствами до его владения, контролируется порогом владения .Значение этого имеет начальное и максимальное значение, которые по умолчанию равны 7 и 15 (в JDK 8).Они могут быть установлены явно с помощью флагов командной строки -XX: InitialTenuringThreshold = n и -XX: MaximumTenuringThreshold = n .

JVM отрегулирует порог владения в пределахначальные и максимальные значения.Дополнительный флаг -XX: TargetSurvivorRatio = n (по умолчанию 50) можно использовать для изменения процентного соотношения оставшегося в живых пространства, используемого коллекцией.

Чтобы ответить на ваш конкретный вопрос, владение объектамиосновано на времени жизни, а не на частоте доступа.

0 голосов
/ 29 ноября 2018

Объекты перемещаются в другое пространство выживших, если они все еще живы.Повышение в должности до старшего поколения / наемного работника основано на количестве выживших циклов gc.(и, конечно, жизнеспособность). Здесь следует добавить, что, если другое пространство для выживших слишком мало, самые старые объекты будут преждевременно переведены в старое пространство / поколение.

...