Intereting Posts
Как переопределить фильтр в ArrayAdapter от android? Android.R.id.home не может найти символ Как проверить, реализует ли какой-либо интерфейс интерфейс после того, как onAttach (активность активности) был депрепаратирован Ошибка "не может использовать клиент командной строки subversion: svn" при открытии проекта Android из svn Есть ли способ для Activity узнать, какой фрагмент был только что создан? Как Canvas определяет границы клипа? Как сохранить изображение вместе с видом на поверхность в Android? Как скрыть строку состояния в Android Как дать возможность запускать собственное приложение на странице контактной информации для родных Android? Как найти корень утечек памяти? Выберите последнюю строку Какой файл R.java действительно делает и как Android onTouchListener на LinearLayout Ускорить скорость анимации «Навигационный ящик» при закрытии? Каково использование класса TelephoneNumberUtil?

Указатель Brooks в классе объектов

В Android SDK 21 в коде Object.java я натолкнулся на термин «Указатель ручейков». Я прочитал сообщение здесь, но я не понимаю его. В сообщении он описывается как ссылка на сам объект в куче. Но в чем его польза?
Как это поможет в сборке мусора и эвакуации объекта?

Блог Романа объясняет, как работает его реализация GC.

вступление

обзор

Указатели перенаправления Брукс

Это новая функция в GC Shenandoah, которая позволяет потокам приложений взаимодействовать с объектами в куче, когда их перемещают во время уплотнения (перемещение ссылочных объектов в лучшее место), устраняя необходимость «остановить мир»,

До этого требовалось предотвратить доступ к ссылочным объектам, пока GC переместил их, чтобы никто не мог получить доступ к объекту до тех пор, пока он не окажется в новом местоположении. Если вы попытались получить доступ к объекту, но GC уже переместили его, возникнут проблемы. Вот почему у нас есть «stop-the-world», когда пришло время GC (никакие потоки не имеют доступа к объектам в куче для мер безопасности). Пока объекты перемещаются, граф объектов считается непоследовательным, поэтому лучше всего предотвратить доступ к нему.

С помощью этой новой системы указатель переадресации (прокрутка вниз до указателя пересылки ) помещается в место, на которое ссылался объект, который ссылается на новое местоположение объекта. Теперь нам не нужно беспокоиться о том, что объект не существует, если GC должен был его переместить, поскольку мы все еще можем ссылаться на него с помощью указателя пересылки. Теперь мы можем получить доступ к объекту, когда GC перемещает его , что означает, что нам больше не нужно предотвращать доступ во время уплотнения.

«Указатель пересылки», на который я имею в виду, – это указатель Брукса