Spec-Zone.ru › OpenJDK 17

Интерфейс DGC

Все суперинтерфейсы:
Remote
public interface DGC extends Remote
Абстракция DGC используется для серверной части алгоритма распределённого сбора мусора. Этот интерфейс содержит два метода: dirty и clean. Вызов dirty выполняется, когда удалённая ссылка размаршалируется в клиенте (клиент идентифицируется по своему VM ID). Соответствующий вызов clean выполняется, когда больше нет ссылок на удалённую ссылку в клиенте. Неуспешный вызов dirty должен запланировать сильный вызов clean, чтобы порядковый номер вызова можно было сохранить для обнаружения будущих вызовов, полученных вне порядка распределённым сборщиком мусора. Ссылка на удалённый объект сдаётся в аренду клиентом, удерживающим ссылку. Период аренды начинается, когда получен вызов dirty. Клиент несёт ответственность за продление аренды, выполняя дополнительные вызовы dirty для удалённых ссылок, которые он удерживает, прежде чем эти аренды истекут. Если клиент не продлит аренду до её истечения, распределённый сборщик мусора предполагает, что удалённый объект больше не ссылается этим клиентом.

Краткое описание методов

Модификатор и тип Метод Описание
void clean(ObjID[] ids, long sequenceNum, VMID vmid, boolean strong)
Вызов clean удаляет 'vmid' из списка ссылок каждого удалённого объекта, указанного в 'id'.
Lease dirty(ObjID[] ids, long sequenceNum, Lease lease)
Вызов dirty запрашивает аренды для удалённых объектных ссылок, связанных с идентификаторами объектов, содержащимися в массиве 'ids'.

Подробное описание методов

dirty

Lease dirty(ObjID[] ids, long sequenceNum, Lease lease) throws RemoteException
Вызов dirty запрашивает аренды для удалённых объектных ссылок, связанных с идентификаторами объектов, содержащимися в массиве 'ids'. 'lease' содержит уникальный идентификатор виртуальной машины (VM ID) клиента и запрашиваемый период аренды. Для каждого удалённого объекта, экспортированного в локальной виртуальной машине, сборщик мусора поддерживает список ссылок — список клиентов, у которых есть ссылки на него. Если аренда предоставлена, сборщик мусора добавляет VM ID клиента в список ссылок для каждого удалённого объекта, указанного в 'ids'. Параметр 'sequenceNum' — порядковый номер, используемый для обнаружения и отбрасывания запоздалых вызовов сборщику мусора. Порядковый номер должен всегда увеличиваться при каждом последующем вызове сборщика мусора. Некоторые клиенты не могут сгенерировать VM ID, так как VM ID — это универсальный уникальный идентификатор, содержащий адрес хоста, который некоторые клиенты не могут получить из-за ограничений безопасности. В этом случае клиент может использовать VM ID null, и распределённый сборщик мусора назначит VM ID для клиента. Вызов dirty возвращает объект Lease, который содержит используемый VM ID и предоставленный период аренды для удалённых ссылок (сервер может решить предоставить меньший период аренды, чем запрашивает клиент). Клиент должен использовать VM ID, используемый сборщиком мусора, для выполнения соответствующих вызовов clean, когда клиент удаляет удалённые объектные ссылки. Клиентская виртуальная машина должна выполнить только один начальный вызов dirty для каждой удалённой ссылки, на которую ссылается виртуальная машина (даже если у неё есть несколько ссылок на один и тот же удалённый объект). Клиент также должен выполнить вызов dirty для продления аренды на удалённые ссылки до истечения срока аренды. Когда у клиента больше нет ссылок на конкретный удалённый объект, он должен запланировать вызов clean для идентификатора объекта, связанного со ссылкой.
Параметры:
ids - Идентификаторы объектов, которые нужно пометить как ссылающиеся на них вызывающим клиентом
sequenceNum - порядковый номер
lease - запрашиваемая аренда
Возвращает:
предоставленная аренда
Исключения:
RemoteException - если вызов dirty завершится неудачно

clean

void clean(ObjID[] ids, long sequenceNum, VMID vmid, boolean strong) throws RemoteException
Вызов clean удаляет 'vmid' из списка ссылок каждого удалённого объекта, указанного в 'id'. Порядковый номер используется для обнаружения запоздалых вызовов clean. Если аргумент 'strong' равен true, то вызов clean является результатом неудачного вызова dirty, поэтому порядковый номер для клиента 'vmid' необходимо запомнить.
Параметры:
ids - Идентификаторы объектов, которые нужно пометить как не ссылающиеся на них вызывающим клиентом
sequenceNum - порядковый номер
vmid - VM ID клиента
strong - выполнить сильный вызов clean
Исключения:
RemoteException - если вызов clean завершится неудачно

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.rmi/java/rmi/dgc/DGC.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API