Spec-Zone.ru › OpenJDK 25

Интерфейс MemorySegment.Scope

Включающий интерфейс:
MemorySegment
public static sealed interface MemorySegment.Scope
Область действия моделирует время жизни всех связанных с ней сегментов памяти.

Иными словами, к сегменту памяти нельзя получить доступ, если связанная с ним область действия не является активной. Экземпляры областей действия можно сравнивать на равенство. То есть две области действия считаются равными, если они обозначают одно и то же время жизни.

Время жизни сегмента памяти может быть либо неограниченным, либо ограниченным. Неограниченное время жизни моделируется с помощью глобальной области действия. Глобальная область действия всегда alive. Поэтому сегмент, связанный с глобальной областью действия, имеет тривиальные временные границы и всегда доступен. С глобальной областью действия связаны следующие сегменты:

  • Сегменты, полученные из глобальной арены;
  • Сегменты, полученные из необработанного адреса с помощью фабричного метода MemorySegment.ofAddress(long); и
  • Zero-length memory segments.

Напротив, ограниченное время жизни моделируется с помощью области действия сегмента, которую можно сделать недействительной вручную — вызвав explicitly — или автоматически, сборщиком мусора. Область действия сегмента, которая становится недействительной автоматически, называется автоматической областью действия. Автоматическая область действия всегда alive, пока она достижима. С автоматической областью действия связаны следующие сегменты:

  • Сегменты, полученные из автоматической арены;
  • Сегменты, полученные из массива Java, например с помощью фабричного метода MemorySegment.ofArray(int[]);
  • Сегменты, полученные из буфера с помощью фабричного метода MemorySegment.ofBuffer(Buffer); и
  • Сегменты, полученные с помощью поиска загрузчика.
Если два сегмента памяти получены из одного и того же буфера или массива, автоматические области действия, связанные с этими сегментами, считаются равными, поскольку оба сегмента имеют одинаковое время жизни:
byte[] arr = new byte[10];
MemorySegment segment1 = MemorySegment.ofArray(arr);
MemorySegment segment2 = MemorySegment.ofArray(arr);
assert segment1.scope().equals(segment2.scope());
С версии:
22

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

Модификатор и тип Метод Описание
boolean equals(Object that)
Возвращает true, если переданный объект также является областью действия, моделирующей то же время жизни, что и данная область действия.
int hashCode()
Возвращает хеш-код этого объекта области действия.
boolean isAlive()
Возвращает true, если области памяти, на которых основаны связанные с этой областью действия сегменты памяти, всё ещё действительны.

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

isAlive

boolean isAlive()
Возвращает true, если области памяти, на которых основаны связанные с этой областью действия сегменты памяти, всё ещё действительны.
Возвращает:
true, если области памяти, на которых основаны связанные с этой областью действия сегменты памяти, всё ещё действительны

equals

boolean equals(Object that)
Возвращает true, если переданный объект также является областью действия, моделирующей то же время жизни, что и данная область действия. В этом случае всегда выполняется this.isAlive() == ((Scope)that).isAlive().
Переопределяет:
equals в классе Object
Параметры:
that — объект для проверки
Возвращает:
true, если переданный объект также является областью действия, моделирующей то же время жизни, что и данная область действия
См. также:
  • Object.hashCode()
  • HashMap

hashCode

int hashCode()
Возвращает хеш-код этого объекта области действия.
Переопределяет:
hashCode в классе Object
Требования к реализации:
Реализации этого метода должны соблюдать общий контракт Object.hashCode().
Возвращает:
хеш-код этого объекта области действия
См. также:
  • equals(Object)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/lang/foreign/MemorySegment.Scope.html

Spec-Zone.ru

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